Docker和Jenkins自动化部署 JAVA,自己踩坑爬出来的--第二篇

it2026-01-08  8

Docker && Jenkins自动化部署 JAVA,自己踩坑爬出来的

客官来了,楼上请,雅间一间,楼上的姑娘接客了

点击跳转第一篇

进入正题 接着使用docker 加 jenkins 实现自动部署
jenkins 如何搭建 百度一下哈,

好像用docker搭建的jenkins,在使用jenkins 时无法使用docker 命令,建议不要用docker 搭建jenkins

开始干 上干货。。。

首先我先描述一下 部署的流程

1、使用Jenkins 去拉取源码

2、拉取完之后进行打包,

2.1、打出来的jar包放到 Dockerfile 目录下。2.2、基于Dockerfile 构建成新的镜像 。

3、将刚构建的镜像打个TAG,然后push到私有仓库下

4、执行启动脚本

4.1、登录 10.8.9.3 删除旧的容器和镜像 (记得备份哦)4.2、登录 10.8.9.3 拉取刚才push上去的镜像,然后启动成容器

第一步 拉取源码、

打开jenkins 进入配置

第二步

该步骤包含了 2.1、2.2、3、4、4.1、4.2

jenkins上就配置这两个地方即可

#!/bin/bash source /root/.bashrc cd /data/app/jenkins/workspace/${JOB_NAME} #JOB_NAME 是jenkin自带的变量,就是此jenkins工作任务的名字 mvn clean package -Dmaven.test.skip=true #打包 cd target #进入打完包的目录 cp demo-0.0.1-SNAPSHOT.jar /data/docker/dockerfile/test/ #将打完包的 jar 放到 另外一个目录下 cd /data/docker/dockerfile/test/ #进入这个目录 #删除旧的镜像 docker rmi 10.8.9.3/demo:1.1 #基于dockerfile构建新的镜像 docker build -t 10.8.9.3/demo:1.1 . #使用dockerfile 启动新的镜像 不用不忽略后面的 点哦 . docker images #查看镜像 #将新的镜像上传docker私有仓库 docker push 10.8.9.3/demo:1.1 #启动部署各个节点脚本 ./demo-start.sh

好,Jenkins 上配置 写完了 接下来我们 就到服务器上写 dockerfile 和 demo-start 的启动脚本了

接下来看Dockerfile 配置
cat Dockerfile FROM ascdc/jdk8 #基于 jdk8 打包镜像 ADD demo-0.0.1-SNAPSHOT.jar ./demo-0.0.1-SNAPSHOT.jar EXPOSE 6061 ENTRYPOINT ["java","-jar","-Duser.timezone=GMT+08","./demo-0.0.1-SNAPSHOT.jar"]

Dockerfile 的配置写法 查度娘吧

接着看demo-start.sh
cd /data/docker/dockerfile/test/ ll demo-start.sh Dockerfile cat demo-start.sh #!/bin/bash TARGET_HOST="10.8.9.3" #要部署的服务器地址 #如果第一次部署 不用停止和删除的步骤 ## 我是利用 absible 执行的远程命令 echo "stop old demo && del old demo && del old demo-image" ansible ${TARGET_HOST} -m shell -a "docker stop demo-service;docker rm demo-service;docker rmi demo:1.1" echo "pull new-image && new TAG && del image && start new tag image" ansible ${TARGET_HOST} -m shell -a "docker pull 10.8.9.2/demo:1.1;docker tag 10.8.9.2/demo:1.1 demo:1.1;docker rmi 10.8.9.2/demo:1.1;docker run --name demo-service -v /data/app/demo:/data/app/demo/ -p 6061:6061 -d demo:1.1"

第一条 echo 下的命令介绍

使用 ansible 远程执行 10.8.9.3 该服务器, 先停止 已有的容器; 在进行删除该容器; 在删除镜像

第二条echo下的命令介绍

使用 ansible 远程执行 10.8.9.3 该服务器 先下载私有仓库的的镜像; 打个新TAG #就是重新命名为 demo:1.1 删除 旧的 镜像 启动新命名的镜像 demo:1.1 –name 给该镜像启动的后容器取名字 -v 本地宿主机的映射路径:jar 容器内部的路径 -p 端口映射 -d 后端运行

注意: Dockerfile、demo-start、demo-0.0.1-SNAPSHOT.jar 这三个文件 必须在同一路径

然后在Jenkins 执行刚才建的JOB 就可以了

以上分享是个人摸索,希望各位看官多多指教

最新回复(0)