docker swarm集群 + gitlab-ci服务器实现项目持续集成部署的流程步骤
Docker  /  管理员 发布于 3年前   1674
之前的几篇文章都是为了这篇文章实现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格式文件。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号