Jenkins动态重新部署docker-compose服务的方法

发表于 2023-12-14 10:29:55
阅读 62

介绍

介绍

好久没有更新了,先给大家说一声抱歉!这段时间福哥把同福网的搜索功能整体重构了一遍,增加了很多的功能,目的是让大家在搜索技术文章的时候体验更好~

今天我们来学习使用Jenkins调用docker-compose部署服务的方法!结合前面学习的使用Jenkins构建Docker镜像的技术,就可以使用Jenkins实现从更新代码到重新构建Docker镜像再到重新部署服务一整套操作了~

其实Jenkins本身有个插件docker-compose-build-step,可以用来实现调用docker-compose的目的。但是这个插件就是简单的执行docker-compose命令,而且还不支持对远程主机进行操作。所以福哥就放弃它了!

环境

镜像版本
jenkins/jenkins:2.401.1
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64
IP192.168.168.68
端口1180、5618

使用

启动相关服务

首先把tfgitlab和tfjenkins启动起来!

docker start tfgitlab tfjenkins

bab25448b2f55b27984c07e147f690f8.png

Docker开启TCP模式

这个福哥在前面使用Jenkins构建Docker镜像的教程里面已经教给大家了,这里就不再赘述了~

复制docker-compose到Jenkins目录

我们把宿主机上的docker-compose脚本复制到tfjenkins的映射目录里。

cd /tongfu.net/data/docker/data/tfjenkins/
mkdir sbin
cp /usr/sbin/docker-compose sbin/

a79a17132d9fe0ae3d17228e6a510a2b.png

配置任务tftest

现在我们来修改tftest任务,在用它来实现重新构建Docker镜像的之后,再去重新部署docker-compose服务。

点击任务tftest的“Configure”进入配置界面,点击“Build steps”进入构建步骤环节,添加一个“Execute shell”操作。

export JENKINS_SBIN_ROOT=/var/jenkins_home/sbin
export DOCKERCOMPOSE_ROOT=/var/jenkins_home/dockerfile
$JENKINS_SBIN_ROOT/docker-compose \
-H "tcp://192.168.168.68:5168" \
-f $DOCKERCOMPOSE_ROOT/docker-compose.yml \
up -d tfphp

6be08d5f62cf900428e20dc4b3829043.png

点击“Save”按钮保存任务tftest。

测试任务tftest

修改tfphp工程的配置

把MySQL、Redis和Elasticsearch的主机名改成docker-compose环境里的名称。

d4482c9d0630f8f6f28f96baecaae327.png

记得推送更新到Git服务器。

git add config/config.php
git commit -m "更新主机名适配docker-compose环境"
git push

537a473304b7bad0791697f425af5314.png

修改tfphp服务的docker-compose配置

修改tfjenkins目录下的docker-compose.yml里的tfphp服务的配置,把服务镜像改成tftest:1.0.0,build参数和volumes参数去掉。

vi dockerfile/docker-compose.yml

470897b206047532407d19013028cd86.png

  tfphp:
    image: registry.tongfu.net:5000/tftest:1.0.0
    container_name: tfphp

9b3b4de223b2634785ccf8af7631c687.png

重新构建部署tftest任务。

现在通过tftest任务构建部署tfphp服务,这个任务包括重新构建tftest:1.0.0镜像以及重新部署tfphp服务两个操作。

0c52be28a53751088d0ce9ef1d412601.png

f5f34873a5b1acc823898617fb89ffd4.png

启动docker-compose服务组

使用tfjenkins目录下的docker-compose.yml启动服务组,包括MySQL、Redis、Elasticsearch和Nginx服务。

docker-compose -f dockerfile/docker-compose.yml up -d

8cbcc34c74cd779b66ac5da75d064a27.png

使用浏览器测试

打开浏览器,输入网址http://tfphp-by-host.tongfu.net/tfmysql.php,数据都出来了!

dd68f1d333d0aeccf2e83645a2b2b687.png

总结

今天我们学习了使用Jenkins调用docker-compose脚本完成重新部署服务的方法,今后大家就可以使用Jenkins进行docker-compose环境里的服务的重新部署了。

说实在的,docker-compose解决方案一般应用于单服务器情况,单服务器还是直接敲命令更加简单~

后面福哥会教给大家如何使用Jenkins工具实现重新部署在Rancher服务器集群里的服务,敬请期待~