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

在这里插入图片描述

😄 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项目实现自动化部署


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kafka SASL_SSL集群认证

背景 公司需要对kafka环境进行安全验证,目前考虑到的方案有Kerberos和SSL和SASL_SSL,最终考虑到安全和功能的丰富度,我们最终选择了SASL_SSL方案。处于知识积累的角度,记录一下kafka SASL_SSL安装部署的步骤。 机器规划 目前测试环境公搭建了三台kafka主机服务,现在将详…

【js刷题:数据结构链表之环形链表】

环形链表 一、题目二、实现思路1.判断是否有环2.如何找到环状链表的入口节点 三、解题代码 一、题目 二、实现思路 主要有两点,首先我们要判断这个链表是否有环,其次我们要找到这个环的入口节点。 1.判断是否有环 定义一个快指针fast和慢指针slow 快指…

基于.NetCore和ABP.VNext的项目实战二:Swagger

Mag.Blog.Swagger层添加Volo.Abp.AspNetCore和Swashbuckle.AspNetCore包,引用实体层.Domain 添加模块类MagBlogSwaggerModule.cs,依赖MagBlogDomainModule模块,并且重写ConfigureServices和OnApplicationInitialization方法 namespace Mag.Blog.Swagger {[DependsOn(typeof…

【机器学习】在电子商务(淘*拼*京*—>抖)的应用分析

机器学习与大模型:电子商务的新引擎 一、电子商务的变革与挑战二、机器学习与大模型的崛起三、机器学习与大模型在电子商务中的应用实践个性化推荐精准营销智能客服库存管理与商品定价 四、总结与展望 随着互联网的飞速发展,电子商务已经成为我们生活中不…

c++ 实现 梯度下降线性回归模型

理论与python实现部分 3.1. 线性回归 — 动手学深度学习 2.0.0 documentation c代码 没能力实现反向传播求梯度&#xff0c;只能自己手动算导数了 #include <bits/stdc.h> #include <time.h> using namespace std;//y_hat X * W b // linreg 函数&#xff1a…

Unity射击游戏开发教程:(24)创造不同的敌人

在这篇文章中,我们将讨论添加一个可以承受多次攻击的新敌人和一些动画来使事情变得栩栩如生。敌人没有任何移动或射击行为。这将有助于增强未来敌人的力量。 我们将声明一个 int 来存储敌人可以承受的攻击数量,并将其设置为 3。

深度学习之基于Matlab卷积神经网络(CNN)手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉领域的一个重要问题&#xff0c;也是深度学习应用的一个典型场景。卷…

基于消息中间件的异步通信机制在系统解耦中的优化与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…

Docker Compose快速入门

本教程旨在通过指导您开发基本Python web应用程序来介绍Docker Compose的基本概念。 使用Flask框架&#xff0c;该应用程序在Redis中提供了一个命中计数器&#xff0c;提供了如何在web开发场景中应用Docker Compose的实际示例。 即使您不熟悉Python&#xff0c;这里演示的概念也…

Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(一) LLaMA-Factory简介

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

以色列人Andi Gutmans开发的php zend

虽然目前php语言不行了【相关的文章前几年已经有人发过】&#xff0c;但这不是重点&#xff0c;重点是zend引擎的东西具有极大的技术价值&#xff0c;负责zend引擎实现的大佬都现在差不多都是40&#xff0c;50岁左右了&#xff0c;从1997&#xff0c;1998&#xff0c;2000到202…

Java基础之进制转换和位运算专题

什么是进制&#xff1f; 是数学中的一个概念&#xff0c;就是数据“逢几进位”。 例如&#xff1a;生活中用的计数方法 ---- 十进制。十进制就是数字逢十就要进一位。 例如&#xff1a;一个星期有7天&#xff0c;就是逢七进一&#xff1b;一个月有30天就是逢30进一&#xff1b;…

基于单片机和蓝牙控制的智能小车设计

摘要 &#xff1a; 本文设计了一种以智能手机为平台控制小车的控制系统&#xff0c;该系统以蓝牙为通信模块&#xff0c;手机通过蓝牙发送信号给小 车上的蓝牙模块&#xff0c;从而驱动电机实现小车各种运动&#xff0c;提供了一种无线遥控小车的新思路。设计了该系统的硬件与软…

思维导图-VPN

浏览器集成了受信任的机构的证书

python+selenium - UI自动框架之封装查找元素

单一的元素定位方法不能满足所有元素的定位&#xff0c;可以根据每个元素的特点来找到合适的方法&#xff0c;可以参考下图的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

汇舟问卷:海外问卷项目适合工作室做吗?

这个项目适合工作室操作&#xff0c;国外问卷调查主要是利用填写问卷来赚取奖励。只要完成得越多&#xff0c;挣得也就越多。 这个项目的本质就是在线上进行简单的工作&#xff0c;只不过结算方式是以美元计算。 即使一份问卷只值1美元&#xff0c;但这也意味着收入达到了7元…

鸿蒙ArkUI-X跨平台技术:【SDK结构介绍】

ArkUI-X SDK目录结构介绍 简介 本文档配套ArkUI-X&#xff0c;将OpenHarmony ArkUI开发框架扩展到不同的OS平台&#xff0c;比如Android和iOS平台&#xff0c;让开发者基于ArkUI&#xff0c;可复用大部分的应用代码&#xff08;UI以及主要应用逻辑&#xff09;并可以部署到相…

ngnix 入门 二,docker启动nginx, 安装ssl 证书,使用配置文件,映射后端服务 ,提供给前端项目访问

搭建生产环境真不是人做的事&#xff0c;特别是对于一知半解的人。仅以此文献给各位技术人 说一下背景&#xff1a;项目前后端分离&#xff0c;前端 vue3 、小程序端 &#xff0c;后端 go 提供服务。 微信小程序需要使用 https 请求。 这就必须让我们想到nginx 了 想要达到的…

代码随想录算法训练营第二天| 977.有序数组的平方 、209.长度最小的子数组、 59.螺旋矩阵II

977. 有序数组的平方 题目链接&#xff1a;977. 有序数组的平方 文档讲解&#xff1a;代码随想录 状态&#xff1a;so easy 刚开始看到题目第一反应就是平方之后进行排序&#xff0c;数据量在 1 0 4 10^4 104&#xff0c;可以使用O(nlogn)的排序。但是更好的方式是使用双指针&a…

ArrayList与LinkedList

内存 内存缓存 预先将数据写到容器等数据存储单元中&#xff0c;就是软件内存缓存。 内存缓存淘汰机制 FIFO&#xff08;First in ,First Out&#xff09;&#xff08;先进先出&#xff09; LFU (Least Frequently Used) (频繁的最后淘汰) LRU(Least Recently Used) &#…