docker swarm集群 + gitlab-ci服务器实现项目持续集成部署的流程步骤
之前的几篇文章都是为了这篇文章实现docker swarm集群中持续集成部署项目
回顾一下步骤:
1.准备两台centos7服务器
2.在其中一台hostname为master的机器上搭建gitlab服务
3.在另一台hostname:work1的机器上搭建gitlab-runner服务
4.在master上初始化docker,然后master、work1都加入集群形成docker swarm集群环境
5.在集群中搭建portainer图形化界面
6.创建阿里镜像仓库,用来存储镜像
7.在gitlab服务器上创建项目,然后下拉/上传在合并配合ci/cd实现持续集成
ps:
上面的步骤都有写教程,有兴趣的可以自行进本站docker分类中查阅
我在以hyperf框架为实例,实现持续部署,废话不多说直接进人步骤
项目我已经拉下来
1.修改.gitlab-ci.yml文件
# usermod -aG docker gitlab-runner
stages:
- build
- deploy
variables:
PROJECT_NAME: demo
REGISTRY_URL: registry.cn-hangzhou.aliyuncs.com/test_hyperf
build_test_docker:
stage: build
before_script:
# - git submodule sync --recursive
# - git submodule update --init --recursive
script:
- docker build . -t $PROJECT_NAME
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:test
- docker push $REGISTRY_URL/$PROJECT_NAME:test
only:
- test
tags:
- builder
deploy_test_docker:
stage: deploy
script:
- docker stack deploy -c deploy.test.yml --with-registry-auth $PROJECT_NAME
only:
- test
tags:
- builder
build_docker:
stage: build
before_script:
# - git submodule sync --recursive
# - git submodule update --init --recursive
script:
- docker build . -t $PROJECT_NAME
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:$CI_COMMIT_REF_NAME
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:latest
- docker push $REGISTRY_URL/$PROJECT_NAME:$CI_COMMIT_REF_NAME
- docker push $REGISTRY_URL/$PROJECT_NAME:latest
only:
- tags
tags:
- builder
deploy_docker:
stage: deploy
script:
- echo SUCCESS
only:
- tags
tags:
- builder
2.修改deploy.test.yml文件
version: '3.7'
services:
demo:
image: $REGISTRY_URL/$PROJECT_NAME:test
environment:
- "APP_PROJECT=demo"
- "APP_ENV=test"
ports:
- 9501:9501
deploy:
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 5
update_config:
parallelism: 2
delay: 5s
order: start-first
networks:
- default-network
configs:
- source: demo_v1.0
target: /opt/www/.env
configs:
demo_v1.0:
external: true
networks:
default-network:
external: true
3.登录portainer配置.env文件
url:http://172.18.1.150:9000/#/configs
里面信息:
APP_NAME=demo
DB_DRIVER=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=hyperf
DB_USERNAME=root
DB_PASSWORD=
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX=
REDIS_HOST=localhost
REDIS_AUTH=
REDIS_PORT=6379
REDIS_DB=0
4.本地项目修改好之后,提交至gitlab仓库中
5.为了测试,我直接登录至gitlab项目仓库中进行合并操作
点击合并请求->新建合并请求
合并完了只后点击ci/cd这里,发现我们的项目状态:
进行中 ,说明我们的项目正在部署
部署时间根据你的服务器配置等相关,过一会就状态:
已通过 说明项目已自动部署好了
6.进centos7系统docker swarm集群中看一下自动部署的镜像容器及访问效果
master机器:
work1机器:
到这里docker swarm集群+gitlab的集群持续自动部署就完成了
后续项目要发新版就直接提交代码到gitlab服务器项目仓库,然后合并分支就OK了
比如我这是master分支合并到tes分支,具体配置请参考上面的.yml格式文件。
相关文章