😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker+Git+Maven的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~
Jenkins + Docker + Git + Maven 实战教程(三) - 在Jenkins服务器上运行java项目
- 前言
- 运行前准备
- 构建运行容器
- 验证执行
- 自动化部署
- 结语
前言
在上一章节中,我们介绍了Jenkins
的相关配置,同时我们也是用了Github
上的一个DEMO进行测试拉取构建,如果有小伙伴还没了解Jenkins相关配置的可以参考我上一篇教程:
2024最新 Jenkins + Docker + Git + Maven 实战教程(二) - Jenkins相关配置
今天我们继续来操作Jenkins
,我们先由简入深,让DEMO代码运行在Jenkins服务器上。
运行前准备
首先我们回忆一下上一章节的内容,Jenkins
拉取构建的Demo项目是生成在
/home/jenkins-data/workspace/hello-world/target
目录下,且在最初安装Jenkins
已经配置了数据卷,即宿主机可访问到Jenkins构建的Demo项目,我们需要只需要准备一个专门运行Demo项目的Docker
容器,在构建完成的jar包目录下创建Dockerfile
文件生成镜像,最后运行Demo项目的Docker容器,具体流程如下:
有细心的小伙伴可能发现了,如果在上一章节中直接在Jenkins容器安装了JDK,是可以直接java -jar运行demo项目的,这里博主是采用新建运行容器的方式来运行。
构建运行容器
构建Dockerfile
文件,博主这里放在jar包相同目录 /home/jenkins-data/workspace/hello-world/target
下,我们首先构建Dockerfile
#进入目录
cd /home/jenkins-data/workspace/hello-world/target
vim Dockerfile
Dockerfile内容如下
FROM openjdk:11
# 设置工作目录
WORKDIR /app
# 将宿主机的目录挂载到容器的/app目录
VOLUME /app
# 复制.jar文件到工作目录
COPY my-app-1.0-SNAPSHOT.jar /app/my-app.jar
# 设置容器启动时执行的命令
CMD ["java", "-jar", "my-app.jar"]
构建并运行Docker镜像:
#构建镜像
docker build -t my-app .
#运行容器
docker run -d --name my-app-demo my-app
验证执行
在官方提供的demo中,实际上仅控制台输出了 Hello World!
字符串,我们使用 docker run -it
指令直接查看输出
输出结果
至此我们已经测试了Jenkins服务器上启动新的容器运行Demo项目
自动化部署
有小伙伴可能发现了,哎~这哪里是自动化部署啊,每一步都需要自行去操作,不用着急博主只是为了演示项目部署运行的流程,接来下我们看看如何使用Jenkins
实现自动化
由于我们是使用容器部署Jenkins
,在上述流程中,我们发现需要在Jenkins容器中执行Docker
生成镜像工作,需要让我们的Jenkins
容器可以操作宿主机的Docker
将宿主机的Docker引擎挂载到Jenkins容器上,即Jenkins容器调用宿主机的Docker
如果你之前没挂载可以先停止并删除Jenkins容器
# 追加挂载宿主机的Docker引擎
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /home/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
--name jenkins-docker \
jenkins/jenkins:lts-jdk17
在Jenkins
后台进入hello-world
项目,在左侧找到配置
上一章节我们已经配置了Git Repository URL
找到 Post Steps
选项,,选择仅构建成功执行
设置我们的sell
命令,需要判断对应容器是否存在,存在则需要停止并删除
# 默认操作在Jenkins工作目录下的项目名目录 即 workspace/hello-world/target
cd target
#构建镜像
docker build -t my-app .
# 使用docker ps和grep来检查容器是否存在
if docker ps -a | grep "my-app-demo" > /dev/null; then
echo "容器存在"
#容器存在则停止并删除容器
docker stop my-app-demo
docker rm my-app-demo
fi
#运行容器
docker run -d --name my-app-demo my-app
查看控制台输出
进入宿主机查看项目书否正常输出了Hello World!
docker logs my-app-demo
Hello World!
结语
本章节使用jenkins实现在同一个宿主机中拉取构建,并将项目运行到宿主机另外一个jdk11容器中,由简入深小伙伴们可以跟着博主的教程一步步进行操作,如果过程中遇到什么问题欢迎留言!
本章节因为使用了官方的demo项目进行拉取构建,Dockerfile是自己在宿主机中编写的,下一章节我们将构建一个简单的SprongBoot项目并在项目中配置Dockerfile,从创建SprongBoot项目 -> 上传github ->自动化部署进行演练。
下一章节:2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署