首页 > 其他分享 >Docker 安装 Jenkins

Docker 安装 Jenkins

时间:2025-01-16 16:48:45浏览次数:1  
标签:容器 -- Maven jenkins Jenkins home Docker 安装

Jenkins 安装

拉取 Jenkins 镜像

docker pull jenkinsci/blueocean
docker pull jenkinsci/blueocean:1.25.3

创建 Jenkins 工作目录

将容器内目录挂载到此目录上,这样我们可以在宿主机上对文件的修改同步到容器内。

mkdir -p /mydata/jenkins/jenkins_home
mkdir -p /mydata/jenkins/logs
mkdir -p /mydata/jenkins/docker
chmod 777 /mydata/jenkins

创建容器

同时映射宿主机和容器内端口。

docker run -d -p 8099:8080 -p 50099:50000 \
--name jenkins \
--restart=always \
--privileged=true  \
-v /mydata/jenkins/jenkins_home:/var/jenkins_home \
-v /mydata/jenkins/logs:/var/log/jenkins \
-v /etc/localtime:/etc/localtime:ro \
jenkinsci/blueocean:1.25.3

docker run -d -p 8099:8080 -p 50099:50000 \
--name jenkins \
--restart=always \
--privileged=true  \
--env JAVA_OPTS=-Dhudson.model.DownloadService.noSignatureCheck=true \
-v /mydata/jenkins/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
jenkinsci/blueocean:1.25.3
  • -d 后台方式启动
  • -p 映射端口,宿主机端口:容器内端口
  • -v 挂载卷,将容器 Jenkins 工作目录 /var/jenkins_home 挂载到宿主机目录 /mydata/jenkins/jenkins_home
  • -name 给容器起个别名
  • --env JAVA_OPTS : 如果报 ERROR: Signature verification failed in update site 错误添加这行

将 Jenkins 端口添加到防火墙。

firewall-cmd --zone=public --add-port=8099/tcp --permanent
systemctl restart firewalld
firewall-cmd --zone=public --list-ports

配置镜像加速

打开宿主机 Jenkins 工作目录下的 hudson.model.UpdateCenter.xml 文件。

vim /mydata/jenkins/jenkins_home/hudson.model.UpdateCenter.xml

原始内容如下:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>

url 修改为国内的清华大学官方镜像地址,最终内容如下:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

指定版本

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-stable-2.332.3/update-center.json</url>
  </site>
</sites>

重启 Jenkins 服务。

docker restart 容器ID
docker restart jenkins

当然,也可以在登录 Jenkins 后在插件的高级设置里进行配置镜像加速,如下:
[Pasted image 20240418153317.png]

登录初始化 Jenkins

在浏览器访问 http://ip(jenkins 所在主机):8099,出现如下界面需要等待些时间。
[Pasted image 20240418153355.png]
等待后出现如下界面,需要输入密码。
[Pasted image 20240418153404.png]
可以查看宿主机 /mydata/jenkins/jenkins_home/secrets/initialAdminPassword 文件获取密码。

cat /mydata/jenkins/jenkins_home/secrets/initialAdminPassword

或者进入容器,查看 /var/jenkins_home/secrets/initialAdminPassword 文件获取密码。

# 进入容器
docker exec -it 容器ID /bin/bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

输入密码后,出现如下界面,推荐选择第一种,选择后等待插件安装。
[Pasted image 20240418153502.png]
[Pasted image 20240418153506.png]
创建一个 root 用户,并进行登录。
TMesh
123456
登录成功后进入如下页面。
[Pasted image 20240418153527.png]

配置 Jenkins

配置 JDK

使用容器方式安装的 Jenkins,容器内已经默认安装好 JDK 了,如下所示:

[root@192 ~] docker exec -it 容器ID /bin/bash
[root@192 ~] java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)

[root@192 ~] echo $JAVA_HOME
/opt/java/openjdk

将 JDK 安装的路径配置到 Jenkins 全局配置中,如下所示:
[Pasted image 20240418153620.png]
查看 Jenkins java 版本
[Pasted image 20240903221927.png]
[Pasted image 20240418153624.png]

配置 Maven

此演示安装 Maven 3.6.3 版本。
[Pasted image 20240418153636.png]

安装 Maven 插件

如果我们开发的项目是 Maven 项目的话,就需要安装 Maven 插件,安装后重启 Jenkins。
[Pasted image 20240418153648.png]
[Pasted image 20240418153652.png]
在浏览器输入地址http://192.168.52.131:8099/restart重启 Jenkins,然后就可以在新建任务看到 Maven 项目选项了。
[Pasted image 20240418153710.png]

配置码云代码仓库实现自动部署

在 Jenkins 上新建一个 Maven 项目。
[Pasted image 20240418153721.png]
配置码云上的项目地址,如下。添加凭证时需要输入码云的账号和密码。
[Pasted image 20240418153729.png]
[Pasted image 20240418153734.png]
构建命令根据自身情况进行配置,我们从码云拉取的项目是一个简单的 Maven 项目,所以配置简单命令即可。
[Pasted image 20240418153750.png]
Post Steps 选择执行 shell。此步骤是在打包完后进行的操作,此为执行 shell 来启动工程。
[Pasted image 20240418153756.png]
一个简单的启动服务脚本如下:

#!/bin/bash

# 服务名称
SERVER_NAME=jenkins-demo

# 工程所在路径(根据自己情况进行调整)
APP_HOME=$(pwd)

# maven打包后的jar包名
JAR_NAME=jenkins-demo-0.0.1-SNAPSHOT.jar

# jar包的目录
JAR_PATH=${APP_HOME}/target

# 杀死之前的进程
PID_FILE="${APP_HOME}"/"${SERVER_NAME}".pid
if [ -f "${PID_FILE}" ];then
PID=`cat "$PID_FILE"` && kill -9 $PID && echo "kill process "${PID}" finished!"
fi

cd $JAR_PATH

# 修改文件权限
chmod 755 $JAR_NAME

# 启动服务
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME &

# 将新进程ID写到文件中
JAVA_PID=$!
echo "${JAVA_PID}" > "${PID_FILE}"

保存好工程配置后,点击立即构建,即可进行代码拉取、构建打包、启动服务。
[Pasted image 20240418153853.png]
我们可以查看构建的控制台输出日志,如下:
[Pasted image 20240418153902.png]
第一次构建 Maven 项目,因为一开始我们为 Jenkins 配置的是自动下载的 Maven 3.6.3,所以首次需要下载 Maven 安装包,导致构建速度会比较慢,从上图日志可以看出,下载的 Maven 安装包被解压到如下目录:

/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf

为加快 Maven 项目下载依赖的速度,我们可以打开 setting.xml 配置文件,将仓库更改为阿里云的。

vim /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf/settings.xml

将以下内容写入文件中 mirrors 标签对中间。

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>        
</mirror>

<mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked>
</mirror>

我们的 Maven 项目会被部署到容器内的 /var/jenkins_home/workspace/ 目录下。并且会自动执行构建脚本,最终部署成功日志如下:
[Pasted image 20240418153938.png]
最后在容器内访问你的工程接口验证服务是否部署成功。

[root@192 ~] curl 127.0.0.1:15340/test
Hello Jenkins!

如果你需要在外部访问部署的服务接口,那么需要将你服务的端口通过容器映射到宿主机中,即可以在启动 Jenkins 容器时进行端口映射,假设部署的服务端口为15340,如下:

docker run -d -p 8099:8080 -p 50099:50000 -p 15340:15340 -v /mydata/jenkins/jenkins_home:/var/jenkins_home --name jenkins1.25.3 jenkinsci/blueocean:1.25.3
  • -d 后台方式启动
  • -p映射端口,宿主机端口:容器内端口
  • -v 挂载卷,将容器 Jenkins 工作目录 /var/jenkins_home 挂载到宿主机目录 /mydata/jenkins/jenkins_home
  • -name 给容器起个别名

标签:容器,--,Maven,jenkins,Jenkins,home,Docker,安装
From: https://www.cnblogs.com/TMesh/p/18675239

相关文章

  • Jsoncpp的安装与使用方式
    JsonCpp是一个C++库,用于解析和生成JSON数据。它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式。安装Jsoncpp我们可以输入以下命令安装jsoncpp库。sudoyuminstall-yjsoncpp-devel安装时默认安装动态库。头文件存储在/usr/include/jsoncpp/json中。......
  • Cesium-安装和引入问题
    CesiumJS库的构成没有index.js的出口文件主库文件有三种格式,ESModule的是index.js,IIFE的是Cesium.js,CommonJS的是index.cjs。除了主库文件外,CesiumJS还有4个文件夹下的静态资源:Assets文件夹,图片或JSON等前端运行时可能用到的资源ThirdParty文件夹,WebAssembly......
  • 如何在红旗系统安装PGSQL数据库
    红旗系统安装PGSQL教程一、下载pgsql源码二、创建pgsql用户三、创建pgsql目录四、解压源码五、配置构建环境六、编译和安装七、创建数据库目录八、初始化数据库集群九、启动数据库十、添加环境变量十一、连接数据库十二、创建数据库用户十三、外部连接工具访问设置一......
  • 用Python管理Docker容器:从`docker-py`到自动化部署的全面指南
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在现代软件开发和运维过程中,Docker容器化技术因其高效、轻量和可移植性而被广泛应用。Python作为一种灵活且功能强大的编程语言,通过docker-py......
  • 电脑瘦身小工具,免安装卸载软件
    UninstallTool是一款集小巧、安全、快速、强大等多种优点于一身的软件卸载及自启动管理工具。它能够在软件自带的卸载程序完成卸载任务后,继续深入扫描并彻底清除系统中残留的注册信息及其他碎片文件。此外,该工具还配备了安装监视器功能,能够实时监控每个应用程序的安装过程,精准......
  • Windows 蓝牙驱动开发-安装蓝牙设备
    蓝牙配置文件驱动程序有两种安装类型:客户端安装,在此类安装中,远程设备播发其服务,并且计算机与之连接。示例包括:鼠标、键盘和打印机;服务器端安装,在此类安装中,计算机播发服务,并且远程设备可以连接到计算机以使用这些服务;例如,供应商可以创作服务器端安装,使移动设备能够打印到附......
  • helm repository 安装与使用
     官网:https://github.com/helm/chartmuseumhttps://helm.sh/zh/docs/topics/chart_repository/安装命令下载:https://github.com/helm/chartmuseum使用方法:https://chartmuseum.com/docs/#installationchart推送插件下载$helmplugininstallhttps://github.com/chartmus......
  • Redis安装配置与使用
    Redis是什么Redis(RemoteDictionaryServer)是一个开源的内存数据库,遵守BSD协议,它提供了一个高性能的键值(key-value)存储系统,常用于缓存、消息队列、会话存储等应用场景。它的优点很多,Redis与其他key-value存储系统的主要区别在于其提供了丰富的数据类型、高性能的读写能力、......
  • 【Docker】Supervisor 实现单容器运行多服务进程
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker|Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......
  • docker 入门到实战
    一、Docker能解决什么问题?Docker作为一种容器化技术,能够解决多种软件开发和运维中的问题,主要包括:1.环境一致性:确保开发、测试和生产环境的一致性,避免“在我机器上可以运行”的问题。2.依赖管理:容器封装了应用及其所有依赖,使得应用可以在任何支持Docker的环境中运行,无需担......