2024最新 Jenkins + Docker 实战教程(三) - 在Jenkins服务器上运行java项目

服务器 0

在这里插入图片描述

😄 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/targetvim 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/targetcd 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-demofi#运行容器docker run -d --name my-app-demo my-app

查看控制台输出
在这里插入图片描述

进入宿主机查看项目书否正常输出了Hello World!

docker logs my-app-demoHello World!

结语

本章节使用jenkins实现在同一个宿主机中拉取构建,并将项目运行到宿主机另外一个jdk11容器中,由简入深小伙伴们可以跟着博主的教程一步步进行操作,如果过程中遇到什么问题欢迎留言!

本章节因为使用了官方的demo项目进行拉取构建,Dockerfile是自己在宿主机中编写的,下一章节我们将构建一个简单的SprongBoot项目并在项目中配置Dockerfile,从创建SprongBoot项目 -> 上传github ->自动化部署进行演练。

下一章节:2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署


在这里插入图片描述

也许您对下面的内容还感兴趣: