为了避免让代码公开,可以让项目基于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.*" } }