前言
前面使用Jenkins+docker+shell脚本可以方便的实现单体应用部署,但如果是微服务架构,工程包较多,若是为每一个服务都建一个Jenkins job 会变得很繁琐,这个时候就需要用到docker-compose 容器编排工具,它可以只需一行命令就能帮我们完成多个服务的构建、推送、重启。
考虑到如果有多个服务需要部署到多台服务器,如果每台服务器都采用发送jar包再构建镜像的方式会产生许多重复工作,因此这种情况应该使用jenkins构建镜像->推送到私库->服务器拉取->docker-compose启动 如此流程来完成部署。
准备工作
需要安装如下软件:
Jenkins (包括git/svn、publish over ssh 这个插件,jenkins安装教程很多此处不再赘述)
docker
Node JS (可选,仅部署前端vue项目时需要安装)
docker compose
准备工作指路:
jenkins: https://www.jenkins.io/download/ 直接启动war包或者使用docker安装
docker: Install Docker Desktop on Linux
Node Js:Node.js
docker compose: GitHub - docker/compose: Define and run multi-container applications with Docker
或者直接使用curl下载安装,以CentOs为例执行如下代码:
1 | 1、下载docker-compose |
安装docker私库
为了使服务一次打包多次部署,需要安装docker私库来保存镜像
首先建好映射目录的文件夹:
1 | mkdir /data/registry |
执行docker命令启动私库镜像:
1 | docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest |
添加docker配置:
注意:如果是通过内网访问就配内网IP否则 配公网IP
1 | "insecure-registries": ["192.168.2.200:5000"] |
如果需要设置账号密码:
1 | docker run --rm --entrypoint htpasswd httpd:2 -Bbn yourUserName yourPwd >> ./auth/htpasswd |
一般在内网环境部署私库,拉取推送也是全程内网,所以可装可不装
默认私库无法删除镜像,执行如下命令添加配置:
1 | sudo docker exec -it registry /bin/sh |