侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

docker swarm集群 + gitlab-ci服务器实现项目持续集成部署的流程步骤

Docker  /  管理员 发布于 3年前   1716

之前的几篇文章都是为了这篇文章实现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.png

项目我已经拉下来

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


2.png里面信息:

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仓库中

3.png


5.为了测试,我直接登录至gitlab项目仓库中进行合并操作

4.png

点击合并请求->新建合并请求

5.png

合并完了只后点击ci/cd这里,发现我们的项目状态:

进行中 ,说明我们的项目正在部署

部署时间根据你的服务器配置等相关,过一会就状态:

已通过 说明项目已自动部署好了

6.png


6.进centos7系统docker swarm集群中看一下自动部署的镜像容器及访问效果

master机器:

7.png

work1机器:

8.png

到这里docker swarm集群+gitlab的集群持续自动部署就完成了

后续项目要发新版就直接提交代码到gitlab服务器项目仓库,然后合并分支就OK了

比如我这是master分支合并到tes分支,具体配置请参考上面的.yml格式文件。


  • 上一条:
    laravel5.5+框架中任务调度之定时任务的创建流程步骤
    下一条:
    gitlab服务之gitlab-ci.yml配置文件详解
  • 昵称:

    邮箱:

    1条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在docker环境中实现Laravel项目执行定时任务和消息队列流程步骤(0个评论)
    • 在MacBook下laravel项目多php版本docker开发环境配置方案(0个评论)
    • 在docker环境中部署docker部署elk架构流程步骤(1个评论)
    • docker compose跟Dockerfile的区别浅析(0个评论)
    • Ubuntu 22.04系统中安装podman流程步骤(1个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-11
    • 2020-06
    • 2021-05
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-11
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客