爲了避免讓代碼公開,可以讓項目基於gitlab快速自動化部署,簡化單個composer.json文件配置內容php
composer create-project composer/satis --keep-vcs
安裝完以後與github中的目錄結構一致nginx
接着在項目根目錄下建立satis.json文件git
{ "name": "satis packages", "homepage": "http://satis.example.com", "repositories": [ { "type": "git", "url": "ssh://git@gitlab.example.com/tim/test.git" } ], "require":{ "tim/test":"dev-master" } }
homepagegithub
在satis上顯示的默認私有鏡像地址
repositoriesweb
須要被索引的git代碼倉庫地址
requiredocker
明肯定義包名能夠減小索引內容,s中使用require-all通過測試發現會索引全網的php包
接下來對鏡像中的packages建立索引
json
php bin/satis build satis.json ./web -v #-v參數能夠看到被索引的包
pull imagecomposer
git pull composer/satis
在build目錄下建立satis.json文件以後運行ssh
docker run --rm -it -v /build:/build composer/satis
上面這條命令的做用與bin/satis
命令同樣,都是建立索引
gitlab
使用crontab執行建立索引
命令,時間間隔看具體狀況
配置nginx將root指向索引輸出目錄
訪問域名以後能夠看到以下界面
在配置satis.json
中看到repositories
的定義是使用ssh://
協議
目的在於方便管理項目成員開發以及項目部署中的權限。
假設同一個包有多個開發人員則將其餘人員設置爲組成員,在同一臺跳板機上部署項目,而且設置項目的Visibility Level
爲Internal
。
這樣在開發環境中經過登錄gitlab來判斷權限。
在跳板機上則經過添加該機器的公鑰到deploy keys
來判斷權限
這樣就算其餘人有倉庫地址也不能拉到代碼,目的基本達成。
建立一個目錄,再建立一個composer.json文件,依賴添加剛剛建立的包
{ "repositories": [ { "type": "composer", "url": "http://satis.example.com" } ], "config": { "secure-http": false }, "require": { "tim/test": "dev-master" } }
secure-http設置爲false是由於satis默認爲https
repositories是爲了告訴composer鏡像源不單單隻有packagist.org,還包括了剛剛咱們設置的私有鏡像
這些配置能夠單獨在每一個composer.json文件中設置,也能夠像下面這樣(全局加 -g )配置
composer config secure-http false composer config repo.packagist composer http://satis.example.com
建立完以後composer install(忽略域名於以前配置的不一樣,這是我本地域名,可是已經弄完了懶得改)
最後附上tim/test
包的composer.json
{ "name": "tim/test", "authors": [ { "name": "tim", "email": "tim@example.com" } ], "require":{ "monolog/monolog":"1.0.*" } }