其他

使用Jenkins+Docker Swarm+Git自动发布

前言

主要介绍一下中小型软件服务的服务架构设计、发布的流程。
使用Docker Swarm(轻量级集群管理)、Jenkins(构建发布)发布的流程与服务架构。

在此之前需要做的准备工作是非常多的:
1. Docker Swarm部署、Docker私有仓库部署、Jenkins部署
2. Jenkins构建流程以及更新Docker Swarm集群服务的脚本
3. Dockerfile编写
4. 创建Docker Swarm集群服务

总体架构

发布流程

由于是java Maven项目需要使用Jenkins下载相关的插件,具体不做介绍;
代码仓库是Git,在Jenkins中使用了参数化构建,通过指定的git tag构建;
一些应用服务,如redis、MQ等等,都是容器化部署,但是并没有在Docker Swarm中管理维护,考虑到这些服务不存在频繁更新的场景、持久化的问题、业务量,所以都是Docker容器独立部署维护,后续将不做说明。

先说说上图实现的效果:在整个发布流程中,我们只需要通过VPN进入Jenkins然后选择指定的项目tag然后点击发布构建即可;最终会按照设定好的脚本在Docker Swarm集群中发布数个应用服务。非常便捷。

如果遇到特殊情况需要回滚,有两种方式:
1. 使用Jenkins再次发布,tag选择上一个版本就行。(可行,但不推荐)
2. 通过Docker Swarm的回滚机制,它的回滚机制是选择上一次构建使用的镜像。只不过需要进入服务器执行命令。

在整个发布的流程中,其实我们用到了Docker Swarm的一个功能(但是在发布之前需要将Docker Swarm环境搭建好):

总体的意思是:从Docker仓库[172.16.0.179:9000]获取镜像[web_api:v3],每次更新2个容器,一共更新6个,每次间隔1min。

Jenkins的搭建和使用自行搜索即可。
Docker Swarm的搭建过程可以参考其他文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据