前言
主要介绍一下中小型软件服务的服务架构设计、发布的流程。
使用Docker Swarm(轻量级集群管理)、Jenkins(构建发布)发布的流程与服务架构。
在此之前需要做的准备工作是非常多的:
- Docker Swarm部署、Docker私有仓库部署、Jenkins部署
- Jenkins构建流程以及更新Docker Swarm集群服务的脚本
- Dockerfile编写
- 创建Docker Swarm集群服务
总体架构
发布流程
由于是java Maven项目需要使用Jenkins下载相关的插件,具体不做介绍;
代码仓库是Git,在Jenkins中使用了参数化构建,通过指定的git tag构建;
一些应用服务,如redis、MQ等等,都是容器化部署,但是并没有在Docker Swarm中管理维护,考虑到这些服务不存在频繁更新的场景、持久化的问题、业务量,所以都是Docker容器独立部署维护,后续将不做说明。
先说说上图实现的效果:在整个发布流程中,我们只需要通过VPN进入Jenkins然后选择指定的项目tag然后点击发布构建即可;最终会按照设定好的脚本在Docker Swarm集群中发布数个应用服务。非常便捷。
如果遇到特殊情况需要回滚,有两种方式:
- 使用Jenkins再次发布,tag选择上一个版本就行。(可行,但不推荐)
- 通过Docker Swarm的回滚机制,它的回滚机制是选择上一次构建使用的镜像。只不过需要进入服务器执行命令。
在整个发布的流程中,其实我们用到了Docker Swarm的一个功能(但是在发布之前需要将Docker Swarm环境搭建好):
# 更新服务
# --update-parallelism:设置单次更新的副本数量;
# --update-delay:每次更新的间隔时间
# --replicas 6:升级后的总副本数量
# --image 选择镜像
docker service update --replicas 6 --image 172.16.0.179:9000/web_api:v3 --update-parallelism 2 --update-delay 1m web_api
总体的意思是:从Docker仓库[172.16.0.179:9000]获取镜像[web_api:v3],每次更新2个容器,一共更新6个,每次间隔1min。
Jenkins的搭建和使用自行搜索即可。
Docker Swarm的搭建过程可以参考其他文章。
>>转载请注明原文链接地址:使用Jenkins+Docker Swarm+Git自动发布