利用jenkins直接构件docker镜像并发布到docker服务器
0.jenkins首先创建远程ssh账号 ,分别向两台docker服务器去部署
1.创建一个maven任务
2.创建构件需要的环境变量
var_project_name 是项目名称,包括后面构建的镜像名称也用这个
var_app_docker_path 是利用docker部署用的基础目录,请分别先在两台docker机器上创建这个文件夹
3.配置你的源代码拉取地址
4.配置你的maven构件参数
zkui-master/pom.xml 这个就是你们git上主pom文件的路径
5.添加 Send files or execute commands over SSH 配置 两台机器就配置2个
第1个Transfers配置,主要用来删除历史项目临时目录
#!/bin/bash #进入根目录 cd /${var_app_docker_path} #删除临时目录 rm -rf ${var_project_name} #创建临时目录 mkdir ${var_project_name} #进入临时目录 cd ${var_project_name}
第2个Transfers配置,主要用来复制镜像文件
这个地址就是jenkins服务器maven打包的地址
${var_project_name}/docker/Dockerfile ${var_project_name}/docker/ /${var_app_docker_path}/${var_project_name}
由于我的Dockerfile文件也是在git代码上
FROM 192.168.88.85:5000/jdk8:v1 MAINTAINER Miguel Garcia Puyol <miguelpuyol@gmail.com> RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone WORKDIR /var/app #ADD zkui-*.jar /var/app/zkui.jar ADD zkui-2.0-SNAPSHOT-jar-with-dependencies.jar /var/app/zkui.jar #开放8000端口 EXPOSE 9091 #配置容器启动后执行的命令 ENTRYPOINT ["java","-jar","/var/app/zkui.jar"]
第3个Transfers配置,主要用来复制打包文件
jenkins 打包地址
${var_project_name}/target/*.jar ${var_project_name}/target/ /${var_app_docker_path}/${var_project_name}
第4个Transfers配置,主要来关闭已经运行的镜像,删除历史镜像,重新打包镜像,执行镜像
#!/bin/bash echo "↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开始↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓" #获得变量 var_images_id=`docker images|grep -i ${var_project_name}|awk '{print $3}'` var_ps_id=`docker ps -a|grep -i ${var_project_name}|awk '{print $1}'` echo "${var_project_name}docker images ID:${var_images_id}" echo "${var_project_name}docker ps ID:${var_ps_id}" #结束镜像任务 if [ -n "$var_ps_id" ]; then docker rm -f ${var_ps_id} echo "结束镜像:${var_project_name},ID:${var_images_id}" fi #删除历史镜像 if [ -n "$var_images_id" ]; then docker rmi -f ${var_images_id} echo "删除镜像:${var_project_name} ID:${var_images_id}" fi #进入临时文件 cd /${var_app_docker_path}/${var_project_name} echo "当前目录:$(cd "$(dirname "$0")";pwd)" #开始构件镜像 docker build -t ${var_project_name} . #执行镜像 ,如果需要外部中心注册,需要增加--net参数,主机模式对外暴露IP docker run -it -d -p 9091:9091 --net=host --name ${var_project_name} ${var_project_name} docker run -it -d -p 9091:9091 --name ${var_project_name} ${var_project_name} echo "↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑结束↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
6.配置好以后保存就可以部署服务了
以上为部署过程,脚本可以自行完善