- ubuntu
- docker
- clone该仓库,创建镜像
- 使用Docker部署该镜像
- 挂载
/var/run/docker.sock
至容器中的/var/run/docker.sock
,使用容器中的Docker可以控制宿主机的Docker - 挂载
~/.docker/config.json
至容器中的/root/.docker/config.json
,使用容器拥有pull阿里镜像的权限 - 挂载
./dockerfiles
至容器中的/app/dockerfiles
,告诉容器中的服务该维护哪些容器
EMAIL_TRANSPORT_USER: 发送邮件的邮箱名
EMAIL_TRANSPORT_PASS: 发送邮件的邮箱密码
EMAIL_SUBSCRIBERS: 默认订阅者(多个时,以,
分隔)
- 当对应分支有代码提交后会自动触发构建
- 以上图为例,
branch
:mqtt-broker
为测试网版本的分支,每次提交代码会自动触发构建,并创建test
版本的镜像
- 配置触发器URL,这是测试网暴露的
aliyun-docker-trigger
服务 - 触发方式选择
Tag触发
,Tag选择你的部署的镜像版本,以上一点自动构建
为例,镜像版本为test
,随着上面每完成一次test
版本镜像的build
完成而触发
- 在dockerfiles下创建层级文件夹
- 文件夹名对应为
镜像名
和TAG名
,例如参考上面的步骤,我需要创建mqtt-broker/test - 在上一步的文件夹下创建docker-compose.ymal文件
- aliyun触发器触发后,会给指定的地址(以上为例:
http://www.dbjtech.com:8000/
)发送请求,并携带镜像名
(以上为例:mqtt-broker)与Tag名
(以上为例:test) - aliyun-docker-trigger服务,
镜像名
(以上为例:mqtt-broker)与Tag名
(以上为例:test),找dockerfiles
是否有该文件目录(以上为例:找mqtt-broker/test
文件夹是否存在) - 如果存在,则获取
docker-compose.yml
文件 - 执行
docker pull registry.cn-qingdao.aliyuncs.com/dbjtech/${name}:${tag}
- 执行
docker stack deploy -c ${file} ${name} ${tag} --with-registry-auth
- 检查
email.js
是否存在,存在则发送邮件