Docker 安装 Jenkins

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 后在插件的高级设置里进行配置镜像加速,如下:
在这里插入图片描述

登录初始化 Jenkins

在浏览器访问 http://ip(jenkins 所在主机):8099,出现如下界面需要等待些时间。
在这里插入图片描述
等待后出现如下界面,需要输入密码。
在这里插入图片描述
可以查看宿主机 /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

输入密码后,出现如下界面,推荐选择第一种,选择后等待插件安装。
在这里插入图片描述
在这里插入图片描述
创建一个 root 用户,并进行登录。
TMesh
123456
登录成功后进入如下页面。
在这里插入图片描述

配置 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 全局配置中,如下所示:
在这里插入图片描述
查看 Jenkins java 版本
在这里插入图片描述
查看 Jenkins java 版本
在这里插入图片描述
在这里插入图片描述

配置 Maven

此演示安装 Maven 3.6.3 版本。
在这里插入图片描述

安装 Maven 插件

如果我们开发的项目是 Maven 项目的话,就需要安装 Maven 插件,安装后重启 Jenkins。
在这里插入图片描述
在这里插入图片描述
在浏览器输入地址http://192.168.52.131:8099/restart重启 Jenkins,然后就可以在新建任务看到 Maven 项目选项了。
在这里插入图片描述

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

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

#!/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}"

保存好工程配置后,点击立即构建,即可进行代码拉取、构建打包、启动服务。
在这里插入图片描述
我们可以查看构建的控制台输出日志,如下:
在这里插入图片描述
第一次构建 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/ 目录下。并且会自动执行构建脚本,最终部署成功日志如下:
在这里插入图片描述
最后在容器内访问你的工程接口验证服务是否部署成功。

[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 给容器起个别名
要在Docker安装Jenkins,可以按照以下步骤进行操作: 1. 首先,创建一个自定义的网络,可以使用以下命令创建一个名为woniu_network的网络,并指定IP区间为172.0.0.0/16: ``` docker network create --driver bridge --subnet 172.0.0.0/16 woniu_network ``` 2. 接下来,创建一个用于存放Jenkins数据和配置的目录。可以使用以下命令创建一个名为jenkins的目录,并设置权限: ``` mkdir -p /home/docker/jenkins && chown -R 1000 /home/docker/jenkins ``` 3. 然后,安装Jenkins。可以使用以下命令运行Jenkins容器: ``` docker run -d -p 8080:8080 -p 50000:50000 \ --name jenkins \ --network woniu_network \ --ip 172.0.0.20 \ --restart always \ --privileged=true \ -v /home/docker/jenkins:/var/jenkins_home \ jenkins ``` 4. 如果需要运行中文版的Jenkins,可以使用以下命令运行Jenkins容器: ``` docker run -d -p 8080:8080 -p 50000:50000 \ --name jenkins \ --network woniu_network \ --ip 172.0.0.20 \ --restart always \ --privileged=true \ -v /home/docker/jenkins:/var/jenkins_home \ jenkinsci/blueocean ``` 5. 现在,可以通过访问http://localhost:8080来访问Jenkins。 如果需要在Jenkins节点内执行Docker命令,可以使用以下命令下载并运行Docker映像docker:dind: ``` docker run -d --restart always \ --name jenkins-docker \ --privileged \ --network jenkins \ --network-alias docker \ --env DOCKER_TLS_CERTDIR=/certs \ --volume jenkins-docker-certs:/certs/client \ --volume jenkins-data:/var/jenkins_home \ --publish 2376:2376 \ docker:dind ``` 如果需要清理Jenkins容器,可以使用以下命令: ``` docker rm -f jenkins-blueocean jenkins-docker docker volume rm jenkins-data jenkins-docker-certs ``` 希望以上信息对您有所帮助。 #### 引用[.reference_title] - *1* [Docker 安装 Jenkins](https://blog.csdn.net/u011374856/article/details/109022921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker安装jenkins](https://blog.csdn.net/networken/article/details/98112690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值