利用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.配置好以后保存就可以部署服务了

 

 

 

 以上为部署过程,脚本可以自行完善

posted @ 2021-08-10 17:30  疯癫大圣  阅读(1026)  评论(0编辑  收藏  举报