Docker 安装 Jenkins 并部署 Maven 项目

news2025/5/12 23:09:01

一、前言

在开始之前,我们需要保证系统中已经安装了Docker、JDK、Maven。


二、Docker 拉取镜像

我这里使用的是 2.344 版本的 Jenkins,拉取命令如下:

docker pull jenkins/jenkins:2.344

需要稍微等一会,等待拉取完成。
镜像下载完成后,我们可以通过如下命令查看我们 docker 中的所有镜像。

docker images

在这里插入图片描述
这里可以看到我们刚才拉取的 2.344版本的 Jenkins 镜像。


三、运行容器

下载镜像成功后,我们需要用此镜像运行一个容器,命令如下:

docker run \
-d \
--name jenkins \
-u 0 \
-p 9999:8080 \
-p 8888:8888 \
-p 50000:50000 \
-v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 \
-v /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1 \
-v /home/jenkins_home:/home/jenkins_home \
jenkins/jenkins:2.344

命令解释:

  • -d:在后台运行
  • --name:为我们当前运行的容器取一个名称
  • -u:以某个用户的身份启动(此处的 0 代表是 root 用户,而如果不加该命令,jenkins 启动会默认以 1000 的用户 jenkins 启动,这样会导致某些文件夹的读写权限不足问题,因此建议加上 -u 0 命令启动容器)
  • p:指定映射的IP和端口,前者为本地系统的端口号,后者为容器内部的端口号。以 -p 9999:8888 举例,8888为容器内的端口号,而9999为容器内端口号映射到本地系统(容器外部)的端口,即我们访问本地系统的9999端口,实际会映射到容器内部的8888端口上。此处开放8888端口是因为后面构建项目时,项目的端口也为8888,避免重新给容器开放端口映射。
  • -v:绑定数据卷,拿 -v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 举例:表示将本地系统的 /usr/local/java/jdk-11.0.18 映射到 容器内部的 /usr/local/java/jdk-11.0.18

最后的 jenkins/jenkins:2.344 表示当前启动的容器是基于哪个镜像的,语法 Repository:Tag,如果当前的镜像是唯一的,也可以不用加Tag。

此处我将本地系统的 jdk11 和 maven 都映射到了 当前启动的容器中,而路径我为了便于统一(容器内的路径可以随便自定义),容器内的路径设置为和容器外一样的路径。

/usr/local/java/jdk-11.0.18 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:

which java

在这里插入图片描述
我们复制路径到bin目录的上一级即可,如此处为:/usr/local/java/jdk-11.0.18

/usr/local/maven/apache-maven-3.6.1 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:

which mvn

在这里插入图片描述
同理,复制到 bin 目录的上一层即可,此处为:/usr/local/maven/apache-maven-3.6.1

四、访问Jenkins

当我们输入上述的 docker run 命令后,会生成一个容器,我们可以通过命令查看当前启动的容器:

docker ps

在这里插入图片描述
如果某些同学输入命令后,没有看到该信息,那说明我们的容器运行失败了,可以通过如下命令查看所有容器的状态:

docker ps -a

在这里插入图片描述
这里的 STATUS 大概率会显示 Exit… 表明你的容器启动失败。我们可以查看具体原因。

解锁Jenkins

如果我们的容器启动成功,那么我们直接访问 本地的ip:9999 即可查看到当前页面。
在这里插入图片描述
此时我们如果直接在本地输入命令 cat /var/jenkins_home/secrets/initialAdminPassword 是查看不到的,因为该路径是容器内部的路径,我们需要先进入容器内部,再输入该命令,才能够成功看到密码。

进入容器命令:

docker exec -it 容器id/容器名称 bash

你可以输入的容器id或者容器名称,我一般习惯输入容器名称,如果你的 docker run 命令和我一样,那么可以直接复制如下命令进入容器内部:

docker exec -it jenkins bash

在这里插入图片描述

成功进入容器后,我们在输入如下命令查看初始密码:

cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述

我们复制打印出来的密码,粘贴到网页,点击“继续”,进行下一步操作。

自定义Jenkins

在这里插入图片描述
此处我建议点击“安装推荐的插件”的选项。然后耐心等待,有可能部分插件会安装失败,因为此处的下载源在国外。部分插件安装失败,我们可以点击重试,如果多次重试仍然失败(就是我本人),我们直接点击下一步。

创建第一个管理员用户

在这里插入图片描述

这里可以输入你想创建的账号,输入完毕后,点击保存并完成。

配置实例

在这里插入图片描述

这里默认即可,点击保存并完成。

Jenkins 已就绪

在这里插入图片描述
点击 “开始使用Jenkins”,就可以进入到 Jenkins 的页面了。


五、Jenkins 配置

安装Maven插件

Maven插件默认是不会给我们安装的,因此我们需要自己安装。
首先点击左侧 “Manage Jenkins”,然后找到 “Manage Plugins”并点击,
在这里插入图片描述

然后点击“可选插件”并输入 maven,找到如下插件 Maven Integration plugin,点击下面的 Install without restart。

在这里插入图片描述

全局配置

在这里插入图片描述

首先点击左侧 “Manage Jenkins”,然后找到 “Global Tool Configuration”并点击,

在这里插入图片描述
在这里我们需要配置JDK、Git、Maven。

JDK

点击 “JDK安装”
在这里插入图片描述

输入别名及JAVA_HOME,这里的JAVA_HOME对应的是我们docker容器内部的JAVA_HOME,而我们在第三步将运行容器,将 java 映射的地址为 /usr/local/java/jdk-11.0.18(根据你 docker run 时的配置填写),因此这里直接上即可,如图:

/usr/local/java/jdk-11.0.18

在这里插入图片描述

GIT

Git会在我们自定义Jenkins时安装插件的时候,自动帮我们安装,此处我们无需填写,默认即可。

在这里插入图片描述

Maven

同理,此处需要填写maven的别名和MAVEN_HOME.

在这里插入图片描述
MAVEN_HOME在我们运行容器映射的地址为:

/usr/local/maven/apache-maven-3.6.1

我们填上即可。

最后我们点击应用,然后点击保存即可。


六、部署Maven项目

首先,回到Jenkins首页,点击“+新建任务”,如图:

新建Maven项目

在这里插入图片描述

输入我们项目的名称,点击构建一个Maven项目,然后点击确定,如图:

在这里插入图片描述

配置Git仓库

首先配置我们的Git仓库地址,此处我用的是自己开源的项目,所以无需填写凭证,如果大家的项目需要凭证,可以自行添加:

在这里插入图片描述
添加凭证非常简单,我相信都会,填好需要的账号密码点击保存即可。

在这里插入图片描述
当我们添加完后,URL下方没有出现红色的错误提示表示能够正常连接到该仓库了,可以继续配置仓库分支,这里我选用的是一个 helloworld 的分支,大家根据实际情况自行填写:

在这里插入图片描述

配置Maven构建参数

接下来就是配置Maven,对项目进行打包,Root POM 不用修改,就用 pom.xml,而 Goals and options 我们填写:

clean install -Dmaven.test.skip=true

在这里插入图片描述
这时候Maven的最基本配置就完成了。大家可以点击应用,并保存,开始构建项目,看看能不能打包成功。

在这里插入图片描述

查看控制台输出:

在这里插入图片描述

在这里插入图片描述

启动项目

这样就代表成功了,接下来就开始启动项目了,点击项目,打开左侧的配置,依次选择 Post Steps -> Add post build steps -> 执行shell

在这里插入图片描述
填上我们的启动脚本,这里只是最简单的脚本,大家可以根据实际情况填写:

cd /var/jenkins_home/workspace/flowable_study/target
nohup java -jar flowable_study-1.0-SNAPSHOT.jar >flowable_study.log &2>1 &

注意:我这里是在docker容器内部运行的java项目,大部分实际情况是需要通过jenkins连接到其他服务器去部署项目。大致的流程为:

  • 将容器内的jar包拷贝到目标服务器
  • 切换目录,杀掉当前正在运行的项目
  • 启动项目

我这里只做最基本的部署演示,因此就不弄那么麻烦。同时我这里项目的端口号为8888,我在创建容器,使用 docker run 时,已经将容器内的8888端口映射到宿主机的8888端口了。

写好之后直接应用、保存。然后重新构建项目,这里就能够直接访问8888端口了。
在这里插入图片描述
由此,整个Maven项目构建完成。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GIT码云SSH公钥配置

前言:当你想要从Git码云上克隆或推送代码时,需要进行身份验证。为了进行身份验证,Git码云使用SSH协议,其中包含一个公钥和一个私钥。公钥存储在你的计算机上,并与你的Git码云账户相关联。私钥则必须保密,只…

阿里云学生服务器申请攻略(先学生认证然后完成实验任务)

阿里云学生服务器免费申请,之前是云翼计划学生服务器9元/月,现在是高校计划,学生服务器可以免费申请,先完成学生认证即可免费领取一台云服务器ECS,配置为2核2G、1M带宽、40G系统盘,在云服务器ECS实例过期之…

ROS:VScode开发话题(msg)、服务(srv)、动作(action)、TF,解决 无法打开源文件

一.解决 无法打开源文件 出错原因:系统没有找到.h文件对应的路径。 在编写完msg、srv、action文件后,要进行编译(catkin_make) . 编译之后,msg、srv、action会生成相应的.h文件。 其对应的.h文件目录在devel/includ…

python解决坐标系两点之间有多少种走法问题

问题&#xff1a;在坐标系中第一象限内的点P&#xff08;x,y&#xff09; x<6&#xff0c;y<6. 到终点&#xff08;5,5&#xff09;有多少种走法&#xff1f;并显示出现所经过的点坐标 限制条件&#xff1a;从起点坐标只能向上或者向右走。其中&#xff08;4,3&…

从零开始学习JavaScript:轻松掌握编程语言的核心技能⑥

从零开始学习JavaScript&#xff1a;轻松掌握编程语言的核心技能⑥ 1. JavaScript 对象2. JavaScript 类3. JavaScript prototype&#xff08;原型对象&#xff09;4. prototype 继承5. JavaScript Number 对象5.1 JavaScript 数字 6. JavaScript 字符串&#xff08;String&…

某麦网apk抢票接口加密参数分析(一)

某麦网apk抢票接口加密参数分析&#xff08;一&#xff09; 当下的一些火爆活动&#xff0c;如音乐节、演唱会等需要购买门票的活动&#xff0c;常常会引发一些网络抢票软件的出现。 而某麦网也不例外&#xff0c;很多人使用抢票软件来抢购某些活动的门票。 为了防止这种情况…

基于决策树的泰坦尼克号数据集回归预测

目录 1、作者介绍2、决策树算法2.1 决策树原理2.1.1 基本原理2.1.2 节点的概念 2.2 构建决策树2.3 决策树优缺点 3、实验设计3.1 数据集简介3.2 代码实现3.3 运行结果 4、参考链接 1、作者介绍 任正福&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研…

【大数据工具】Kafka伪分布式、分布式安装和Kafka-manager工具安装与使用

Kafka 安装 Kafka 安装包下载地址&#xff1a;https://archive.apache.org/dist/kafka/ 1. Kafka 伪分布式安装 1. 上传并解压 Kafka 安装包 使用 FileZilla 或其他文件传输工具上传 Kafka 安装包&#xff1a;kafka_2.11-0.10.0.0.tgz解压安装包 [rootbigdata software]# …

为什么添加缓存要在释放锁之前?

为什么加缓存要放在释放锁之前&#xff1f; 线程拿到锁会去查缓存是否有数据&#xff0c;又因为我们向redis存入缓存数据是在释放锁之后 那么释放锁之后&#xff0c;下一个线程查缓存&#xff0c;上一个线程并未存入完成。此时就会出现查询多次数据库的情况&#xff0c;锁失效…

chatgpt赋能python:Python如何重复运行——让你的代码运行更高效

Python如何重复运行——让你的代码运行更高效 Python作为一种非常流行的编程语言&#xff0c;在程序员中间被广泛使用。无论是从事科学计算、数据分析还是网页爬虫&#xff0c;都离不开Python。但是&#xff0c;如果你只会最基础的Python语法&#xff0c;你可能会花费更多的时…

《三维存储芯片技术》----学习记录(一)

第1章 NAND存储器的生态 1.1 存储器行业变迁 可以说近10年是整个存储行业历史上变化最大的10年。 1.1.1 NAND及存储器供应商的整合 如图1.1所示&#xff0c;过去6年中&#xff0c;全球存储器95%的供应集中到5家厂商。 图片来源于《三维存储芯片技术》 1.1.2 NAND技术发展 …

行业应用|立仪光谱共焦位移传感器在玻璃方面的检测

项目&#xff1a;玻璃管管壁单边测厚 行业应用|立仪光谱共焦位移传感器在玻璃方面的检测 行业应用|立仪光谱共焦位移传感器在玻璃方面的检测 检测方案 用D35A7镜头对玻璃管管壁进行单边测厚&#xff0c;取三个点静态测量厚度并记录重复性。 1、采用D35A7R2S35镜头对玻璃管管…

springboot+vue企业设备管理系统

解决的思路&#xff1a; &#xff08;1&#xff09;通过进行需求分析&#xff0c;建立用例模型&#xff0c;上网查找资料&#xff0c;摸清业务流程。 &#xff08;2&#xff09;通过运用vue 技术进行界面的设计&#xff0c;上网搜集符合所做管理系统的相关图片&#xff0c;使用…

springboot 配置文件密码加密处理

一、修改pom文件 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version> </dependency> 二、在启动类中加上注解 EnableEncryptableProp…

开源实时位置共享服务Hauk

【勘误】&#xff1a;在上文 『事务与项目跟踪软件Jira』 一文中&#xff0c;老苏错误的将 4G 内存写成了 4M&#xff0c;感谢网友 纸飞机 和 cwz 的指正。虽然老苏确实用过 4M 内存的机器&#xff0c;但那是20 多年前的事情了。 什么是 Hauk &#xff1f; Hauk 是一个完全开源…

Mysql数据库入门基础篇--mysql基本了解

【Mysql数据库入门基础篇--mysql基本了解 &#x1f53b;一、Mysql5.7 VS Mysql8.0 详解1.1 ⛳字符编码1.2 ⛳用户的创建与授权1.3 ⛳ 认证插件1.4 ⛳ 隐藏索引1.5 ⛳ 持久化设置1.6 ⛳ 通用表达式&#xff08;Common Table Expressions&#xff09;1.7 ⛳ 性能提升1.8 ⛳ 参数变…

chatgpt赋能python:Python如何输出在同一行

Python如何输出在同一行 在Python编程中&#xff0c;有时候我们需要将多个输出放在同一行中。这篇文章将介绍几种方法来实现这个任务&#xff0c;并给出一些例子来帮助你更好地理解。 方法一&#xff1a;使用print函数 Python中的print函数默认会在每个输出之间换行。但是&a…

【大数据工具】HBase 集群搭建与基本使用

HBase 集群搭建 HBase 安装包下载地址&#xff1a;https://archive.apache.org/dist/hbase/ 安装 HBase 的前提&#xff1a; ZooKeeper 集群 OKHadoop 集群 OK 1. HBase 集群安装 1. 将 HBase 软件包上传至 Hadoop0 解压并重命名 使用 FileZilla 将 hbase-1.3.1-bin.tar.g…

pytorch中Dataloader读取数据太慢的问题

文章目录 pytorch中Dataloader读取数据太慢的问题1. 方法2. 方法3. 解决方法&#xff1a;提取加载数据 pytorch中Dataloader读取数据太慢的问题 数据读取的速度远远大于GPU训练的速度&#xff0c;导致整个训练流程中有大部分时间都在等待数据发送到GPU&#xff0c;在资源管理器…

七年磨一剑!苹果王炸产品Vision Pro诞生,未来已来

这是第一款「不见却可透见」的苹果产品 等了整整七年&#xff01;2023年6月5日&#xff0c;WWDC23大会上&#xff0c;苹果发布首款头显Vision Pro&#xff0c;Vision Pro 可以算是苹果公司自 2015 年 Apple Watch 首次亮相以来最大的硬件产品发布&#xff0c;或许它会彻底改变数…