使用Docker安裝部署Jenkins教程分享
本文主要記錄如何通過docker安裝jenkins,并且通過jenkins部署項(xiàng)目
前置準(zhǔn)備:jenkins所在宿主服務(wù)器首先安裝好jdk、maven
一、配置JDK環(huán)境
注意:選擇適合自己的JDK,并且注意安裝JDK的系統(tǒng)
地址:https://www.oracle.com/java/technologies/downloads/#java8

1、卸載linux系統(tǒng)自帶的JDK
(建議直接用超級(jí)用戶,不然卸載的時(shí)候可能會(huì)報(bào)權(quán)限不夠的error,之后的操作也需要用root權(quán)限)
1.1、切換用戶:su root
su root
1.2、查看自帶JDK命令:rpm -qa | grep jdk
rpm -qa | grep jdk
1.3、卸載自帶JDK命令:rpm -e --nodeps 要卸載的JDK
rpm -e --nodeps 要卸載的JDK
2、在usr/local目錄下創(chuàng)建java目錄
把我們下載好的JDK壓縮包上傳到 創(chuàng)建好的 java目錄下(我放在該目錄下了,也可以放在其他目錄下)
創(chuàng)建安裝目錄:mkdir java
cd /usr/local mkdir java cd java
3、把壓縮包解壓到當(dāng)前目錄(我們創(chuàng)建的java目錄下),解壓命令:tar -zxvf 所要解壓的文件名
tar -zxvf 所要解壓的文件名
4、編輯profile文件:vim /etc/profile
把光標(biāo)移到最后一行,鍵盤按 i,進(jìn)入編輯模式,然后插入以下內(nèi)容:(注意自己所建java的路徑、jdk的名稱)
JAVA_HOME=/usr/local/java/jdk1.8.0_381 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
然后按ESC退出編輯模式,‘shift + :’,輸入wq,回車,完成保存并退出
5、讓編輯的文件生效執(zhí)行:source /etc/profile
6、最后驗(yàn)證JDK安裝是否成功:java -version
[root@aliyun ~]# cd /usr/local/java [root@aliyun java]# ls jdk-8u381-linux-x64.tar.gz [root@aliyun java]# tar -zxvf jdk-8u381-linux-x64.tar.gz [root@aliyun java]# vim /etc/profile [root@aliyun java]# source /etc/profile [root@aliyun java]# java -version java version "1.8.0_381" Java(TM) SE Runtime Environment (build 1.8.0_381-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
出現(xiàn)上述顯示,則完畢!
二、配置Maven環(huán)境
1、準(zhǔn)備Maven安裝包
打開Maven官網(wǎng):Maven – Download Apache Maven
我選擇是3.9.3版本(選擇適合自己的版本),找到后綴名是.tar.gz的文件下載,如圖所示:

1.1、創(chuàng)建安裝目錄:mkdir maven
cd /usr/local mkdir maven cd maven
1.2、把壓縮包解壓到當(dāng)前目錄(我們創(chuàng)建的maven目錄下),解壓命令:tar -zxvf 所要解壓的文件名
tar -zxvf 所要解壓的文件名
1.3、解壓完畢以后,新建一個(gè)repository倉庫,用于存放Maven下載下來的jar包
mkdir repository
2、配置鏡像
編輯settings.xml文件
vi apache-maven-3.9.3/conf/settings.xml
按i鍵進(jìn)入編輯模式
1.設(shè)置Maven倉庫,就是我剛才新建的文件夾
<localRepository>/maven/repository</localRepository>

2.配置為阿里云鏡像地址
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>

按Esc鍵退出編輯模式,輸入:wq保存并退出vim編輯器
3、配置環(huán)境變量
編輯profile文件
vim /etc/profile
按i鍵進(jìn)入編輯模式
添加如下環(huán)境變量
export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.3 export PATH=$PATH:$MAVEN_HOME/bin

按Esc鍵退出編輯模式,輸入:wq保存并退出vim編輯器
運(yùn)行以下命令使profile文件生效
source /etc/profile
檢查環(huán)境配置是否成功
mvn -v

大功告成!
三、Jenkins環(huán)境搭建–Docker
#查看你需要安裝的版本 docker search jenkins #安裝鏡像包 docker pull jenkins/jenkins #默認(rèn)安裝最新版本 #安裝指定版本 指令入下 docker pull jenkins/jenkins:xx(版本號(hào)) #查看是否安裝成功(查看鏡像包) docker images
1、使用以下命令下載Jenkins鏡像(安裝最新版)
docker pull jenkins/jenkins:latest
2、啟動(dòng)并創(chuàng)建Jenkins容器
#啟動(dòng)命令: docker run -u root -d \ -p 10240:8080 -p 10241:50000 \ -v /var/jenkins_home/workspace/:/var/jenkins_home/workspace/ \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /usr/local/java/jdk1.8.0_381:/usr/local/java \ -v /usr/local/maven/apache-maven-3.9.3:/usr/local/maven \ -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" \ --name myjenkins jenkins/jenkins #解釋: -d :后臺(tái)運(yùn)行 -p:10240:8080 鏡像8080 :端口映射到宿主機(jī) 10240端口 -p:10241:50000 鏡像50000 :端口映射到宿主機(jī) 10241端口 -v:/var/jenkins_home/workspace/:/var/jenkins_home/workspace/ /var/jenkins_home/workspace/ 宿主機(jī)的Jenkins目錄掛載路徑 jenkins /var/jenkins_home/workspace/ 鏡像服務(wù)器中jenkins的工作目錄 -v /usr/bin/docker:/usr/bin/docker : 掛載docker -v /usr/local/java/jdk1.8.0_381:/usr/local/java : 掛載映射宿主機(jī)jdk -v /usr/local/maven/apache-maven-3.9.3:/usr/local/maven : 掛載映射宿主機(jī)maven -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" \ :同步時(shí)間 --name myjenkins(自定義容器名稱) jenkins/jenkins(需要映射容器名稱)
如果執(zhí)行命令發(fā)現(xiàn)jenkins沒有啟動(dòng)成功,很大概率是因?yàn)閽燧d的目錄沒有權(quán)限,需要授權(quán)
chown -R 1000:1000 /root/apply/jenkins_mount chown -R 1000:1000 /root/apply/apache-maven-3.8.4 chown -R 1000:1000 /usr/local/jenkins chown -R 1000:1000 /etc/localtime
jenkins容器啟動(dòng)以后,咱們就需要到阿里云或者是騰訊云中,將端口為10240打開
瀏覽器訪問:你的服務(wù)器ip:10240。不出意外,你就能訪問到j(luò)enkins了。

3、進(jìn)入容器,查看登錄初始化密碼
執(zhí)行命令:
docker exec -it myjenkins /bin/bash cat /var/jenkins_home/secrets/initialAdminPassword

選擇安裝推薦插件

2.3版本安裝插件很多失敗,我換成了2.415版本

安裝完成后創(chuàng)建管理員用戶

4、配置Jenkins
4.1、安裝三個(gè)插件: Publish Over SSH和Maven Integration和GitLab ,點(diǎn)擊: 系統(tǒng)管理->插件管理 -> 可選插件中進(jìn)行輸入安裝。
如下圖所示:


4.2、安裝好上一步中的幾個(gè)插件之后,接下來需要在jenkins中配置一下Git和SSH: 點(diǎn)擊:系統(tǒng)管理 -> 系統(tǒng)配置 -> 找到Git和SSH




4.3、配置JDK和Maven: 點(diǎn)擊:系統(tǒng)管理 -> 全局工具配置 -> 找到JDK和Maven


四、使用Jenkins構(gòu)建項(xiàng)目
Jenkins中構(gòu)建項(xiàng)目的類型有很多,常用的有以下三種:
- 自由風(fēng)格軟件項(xiàng)目(FreeStyle Project)(推薦)
- Maven項(xiàng)目(Maven Project)
- 流水線項(xiàng)目(Pipeline Project)(推薦)
實(shí)際上每種類型的構(gòu)建都可以完成一樣的構(gòu)建過程與結(jié)果,只是在操作方式、靈活度等方面有所區(qū)別,在實(shí)際開發(fā)中可以根據(jù)自己的需求和習(xí)慣來選擇。從靈活度上來說,流水線類型是最高的。


1、Pipeline流水線項(xiàng)目構(gòu)建(推薦)
簡(jiǎn)單來說,Pipeline就是一套運(yùn)行在 Jenkins 上的工作流框架,將原來獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜流程編排和可視化的工作。
Pipeline支持兩種語法:聲明式(Declarative)和腳本式(Scripted Pipeline)語法。
注意:需要安裝Pipeline插件

1.1、聲明式項(xiàng)目構(gòu)建

- stages:代表整個(gè)流水線的所有執(zhí)行階段,通常stages只有1個(gè),里面包含多個(gè)stage。
- stage:代表流水線中的某個(gè)階段,可能出現(xiàn)n個(gè)。一般分為拉取代碼、編譯構(gòu)建、部署等階段。
- steps:代表一個(gè)階段內(nèi)需要執(zhí)行的邏輯。steps里面是shell腳本,git拉取代碼、ssh遠(yuǎn)程發(fā)布等任意內(nèi)容。
這里,我們編寫一個(gè)簡(jiǎn)單聲明式的Pipeline,來感受一下整個(gè)構(gòu)建過程:
pipeline {
agent any
stages {
stage('拉取代碼') {
steps {
echo '拉取代碼'
}
}
stage('編譯構(gòu)建') {
steps {
echo '編譯構(gòu)建'
}
}
stage('項(xiàng)目部署') {
steps {
echo '項(xiàng)目部署'
}
}
}
}
開始構(gòu)建,并輸出構(gòu)建結(jié)果

1.2、腳本式項(xiàng)目構(gòu)建

- Node :節(jié)點(diǎn),一個(gè) Node 就是一個(gè) Jenkins 節(jié)點(diǎn),Master 或者 Agent,是執(zhí)行 Step 的具體運(yùn)行環(huán)境。
- Stage :階段,一個(gè) Pipeline 可以劃分為若干個(gè) Stage,每個(gè) Stage 代表一組操作,比如:Build、Test、Deploy,Stage 是一個(gè)邏輯分組的概念。
- Step :步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構(gòu)建一個(gè) Docker 鏡像,由各類 Jenkins 插件提供,比如命令:sh ‘make’,就相當(dāng)于我們平時(shí) shell 終端中執(zhí)行 make 命令一樣。
編寫一個(gè)簡(jiǎn)單的腳本式Pipeline:
node {
def mvnHome
stage('Preparation') {
echo '拉取代碼'
}
stage('Build') {
echo '編譯構(gòu)建'
}
stage('Results') {
echo '項(xiàng)目部署'
}
}
開始構(gòu)建,并輸出構(gòu)建結(jié)果

1.3、使用腳本構(gòu)建項(xiàng)目
如果不會(huì)寫流水線腳本,選擇流水線語法可以自動(dòng)生成Pipeline語法
點(diǎn)擊【流水線語法】進(jìn)入新頁面

選擇想要生成的流水線腳本,填寫對(duì)應(yīng)配置然后生成

Git拉取代碼流水線語句:

連接服務(wù)器執(zhí)行語句:

最終的流水線腳本:
pipeline {
agent any
tools {
maven "maven3.9.3"
jdk "jdk1.8"
}
stages {
stage('拉取代碼') {
steps {
git credentialsId: '4ef30b0b-a335-4a6e-bfbe-151d59676f44', url: 'http://42.236.74.152:8050/fumingxing/cmcc-tenant.git'
}
}
stage('編譯打包') {
steps {
sh '''echo "開始構(gòu)建"
mvn clean install -Dmaven.test.skip=true
echo "構(gòu)建結(jié)束"'''
}
}
stage("服務(wù)傳輸、啟動(dòng)"){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'mySSH', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#第一步是進(jìn)入到服務(wù)器中生成好的jar包的目錄下
cd /var/jenkins_home/workspace/mytest/ruoyi-admin/target
#第二步是根據(jù)jar包的名字獲取運(yùn)行的pid,并且將該進(jìn)程殺死
ps -ef | grep ruoyi-admin.jar | grep -v grep | awk \'{printf $2}\' | xargs kill -9
#最后一步就是將這個(gè)jar后臺(tái)啟動(dòng)了,并且將日志輸出到out.log中。
nohup java -Xms128m -Xmx128m -Xss1024k -XX:MaxNewSize=64M -XX:MaxPermSize=64M -jar ruoyi-admin.jar >out.log 2>&1 &''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'ruoyi-admin/target', sourceFiles: 'ruoyi-admin/target/ruoyi-admin.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
內(nèi)網(wǎng)環(huán)境下registry搭建步驟詳解
這篇文章主要為大家介紹了內(nèi)網(wǎng)環(huán)境下的registry搭建步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Docker Attach 命令及操作場(chǎng)景應(yīng)用(容器交互機(jī)制)
Docker attach用于連接運(yùn)行容器的IO流,實(shí)現(xiàn)調(diào)試與監(jiān)控,核心參數(shù)包括--detach-keys自定義退出鍵、--no-stdin避免誤操作,生產(chǎn)環(huán)境建議配合安全配置使用,開發(fā)環(huán)境可靈活操作,接下來通過本文給大家介紹Docker Attach 命令的操作應(yīng)用,感興趣的朋友一起看看吧2025-08-08
Ollma本地部署Qwen2.5 14B的詳細(xì)過程(不使用docker)
本文介紹了如何在不使用Docker的情況下部署Ollama模型和Open-webui實(shí)現(xiàn)可視化界面,Ollama模型通過命令行操作,包括啟動(dòng)、創(chuàng)建、運(yùn)行等,Open-webui則需要安裝Anaconda環(huán)境,安裝并啟動(dòng)服務(wù)后,通過瀏覽器訪問即可使用,感興趣的朋友跟隨小編一起看看吧2024-11-11
解決docker目錄內(nèi)存不足擴(kuò)容處理方案
文章介紹了Docker存儲(chǔ)目錄遷移方法:因系統(tǒng)盤空間不足,需將Docker數(shù)據(jù)遷移到更大磁盤(如/home/docker),通過修改daemon.json配置、重啟服務(wù)并驗(yàn)證遷移成功,最終釋放系統(tǒng)盤空間2025-09-09
輕量級(jí)對(duì)象存儲(chǔ)服務(wù)minio安裝及瀏覽器使用教程
本次介紹了minio的安裝及瀏覽器中的簡(jiǎn)單使用,對(duì)輕量級(jí)對(duì)象存儲(chǔ)服務(wù)minio安裝及使用教程感興趣的朋友一起看看吧2021-10-10

