Docker安裝Jenkins打包Maven項目為Docker鏡像並運行【保姆級圖文教學】

一、前言

Jenkins作為CI、CD的先驅者,雖然現在的風頭沒有Gitlab強了,但是還是老當益壯,很多中小公司還是使用比較廣泛的。最近小編經歷了一次Jenkins發包,感覺還不錯,所以自己學習了一下。網上比較多的教程都是在Linux上搭建Jenkins,小編經過一個星期的探索終於完成了在docker中進行搭建。

最終版就是:通過git上傳代碼—>使用Jenkins構建自動打包—>把jar包打成docker鏡像,運行在docker中,Windows下進行訪問

主要記錄一下一些踩過的坑和注意點,讓後來人能夠跟着小編一次完成!!

二、安裝Docker

安裝Docker

三、linux安裝jdk和maven

1、下載JDK8Linux版本

官網下載太慢了,小編這裡為大家下載好了:

鏈接:百度網盤地址
提取碼:ov24

2、下載Maven

maven3.8.5下載鏈接

3、使用xftp上傳到linux上

在這裡插入圖片描述

4、解壓

解壓maven

tar -zxvf apache-maven-3.8.5-bin.tar.gz

重命名maven

mv apache-maven-3.8.5-bin.tar.gz apache-maven-3.8.5

解壓jdk

tar -zxvf jdk-8u333-linux-x64.tar.gz

重命名jdk

mv jdk-8u333-linux-x64.tar.gz jdk1.8

5、配置環境變量

進入環境變量文件

vim /etc/profile

添加jdk和manven配置
輸入i,進入輸入模式

注意自己的安裝目錄,放在文件最上面就行

JAVA_HOME=/usr/local/java/jdk1.8
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
export MAVEN_HOME=/usr/local/java/apache-maven-3.8.5
export PATH=${MAVEN_HOME}/bin:${PATH}

按下esc ,輸入:wq保存退出。

在這裡插入圖片描述

查看是否安裝成功

java -version
mvn -v

在這裡插入圖片描述

6、配置Maven加速鏡像

cd apache-maven-3.8.5/conf/
vim settings.xml

輸入i,進入輸入模式

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

按下esc ,輸入:wq保存退出。

在這裡插入圖片描述

四、Docker安裝Jenkins

1.準備掛載目錄

cd home/
mkdir jenkins_home

一定要賦予修改權限,不然掛載會失敗,我們這裡給最高權限。

chmod -R 777 jenkins_home

在這裡插入圖片描述

2. 執行docker命令

docker run -di --name=myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home \
-v /usr/local/java/jdk:/usr/local/jdk1.8 \
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts

-v /home/jenkins_home:/var/jenkins_home:是對容器內存儲Jenkins的一些配置信息的文件夾
-v /usr/local/java/jdk:/usr/local/jdk1.8:是把linux下的jdk和容器內的關聯(配置Jenkins時使用)
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5:是把linux下的maven和容器內的關聯(配置Jenkins時使用)

-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我們Linux下的docker。

五、配置Jenkins

1. 進入Jenkins

輸入://192.168.84.133:8080/(ip+端口號)
在這裡插入圖片描述

2. 獲取密碼

docker logs 容器id

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3. 安裝插件

在這裡插入圖片描述
在這裡插入圖片描述

4. 創建用戶

在這裡插入圖片描述

5. 保存配置地址

在這裡插入圖片描述

6. 配置插件鏡像

在這裡插入圖片描述
在這裡插入圖片描述
輸入://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

點擊提交
在這裡插入圖片描述
在這裡插入圖片描述

7. 安裝ssh插件

在這裡插入圖片描述
安裝完成重啟一下Jenkins

8. 添加ssh登錄賬號憑據

點擊系統管理,找到下圖點擊
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

9. 配置全局ssh

點擊系統管理,找到系統配置

在這裡插入圖片描述
點擊新增:

在這裡插入圖片描述
點擊保存:
在這裡插入圖片描述

10. 配置jdk和maven

點擊系統管理,找到全局工具配置
在這裡插入圖片描述

在這裡插入圖片描述
點擊保存

六、準備Springboot項目到git

1. 核心代碼

我們看到只是一個請求打印,我們最後訪問有docker成功,代表我們構建發包成功!

在這裡插入圖片描述

2. pom內容

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

3. yml文件

這裡只指定了端口號

server.port=8081

4. Dockerfile

和pom文件同級

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

5. 上傳git倉庫

在這裡插入圖片描述

七、使用Jenkins部署項目

1. 新建任務

在這裡插入圖片描述
在這裡插入圖片描述

2. 添加git憑據

在這裡插入圖片描述
在這裡插入圖片描述
選擇剛剛添加的憑據報錯信息消失
在這裡插入圖片描述

3. 添加maven構建

在這裡插入圖片描述
在這裡插入圖片描述

4. 增加構建執行shell

在這裡插入圖片描述
shell腳本:

#!/bin/bash
# 服務名稱
SERVER_NAME=jenkins

# 源jar名稱,mvn打包之後,target目錄下的jar包名稱
JAR_NAME=demo-0.0.1-SNAPSHOT

# jenkins下的目錄
JENKINS_HOME=/var/jenkins_home/workspace/jenkins

# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
      
echo "結束進程完成"

cd $JENKINS_HOME/target

cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target

# 修改文件權限
chmod 755 $JAR_NAME.jar

echo "看看docker能不能用"
docker -v

echo "停止容器"
# 停止容器
docker stop springboot

echo "刪除容器"
# 刪除容器
docker rm springboot
echo "刪除鏡像"
# 刪除鏡像
docker rmi springboot
echo "打包鏡像"
# 打包鏡像
docker build -t springboot .
echo "運行鏡像"
# 運行鏡像
docker run -d -p 8081:8081 --name springboot springboot

在這裡插入圖片描述

5. 立即構建

在這裡插入圖片描述

6. 控制台輸出報錯

在這裡插入圖片描述
我們看到打包成功了,就是在使用docker命令的時候出現權限問題,這是我們要給docker.sock權限就可以解決了!!

報錯信息:

Got permission denied while trying to connect to the Docker daemon socket at
 unix:///var/run/docker.sock: Post 
 "//%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop": dial unix 
 /var/run/docker.sock: connect: permission denied

解決方案:

chmod a+rw /var/run/docker.sock

7.在次構建

我們發現沒有報錯,也看到了容器的id

在這裡插入圖片描述

8. 查詢docker鏡像是否啟動

docker images
docker ps

在這裡插入圖片描述

9. Win10進行訪問測試

輸入地址://192.168.84.133:8081/test/docker
在這裡插入圖片描述

七、總結

小編斷斷續續研究了一星期,太不容易了,中間也是遇到很多坑,只要是跟着小編走下去的基本都可以跑出來的!
看到這裡還不給小編一鍵三連起來!!謝謝大家了哦~


有緣人才可以看得到的哦!!!

點擊訪問!小編自己的網站,裏面也是有很多好的文章哦!