實現原理
1、Java代碼中創建一個dockerfile文件 --> 2、代碼上傳至GitLab --> 3、Jenkins同步GitLab的代碼進行構建生成jar --> 4、Jenkins將jar包和dockerfile文件傳到測試服務器上 --> 5、在測試服務器上執行dockerfile構建jar鏡像 --> 6、鏡像構建完運行容器
一、環境準備
1、在測試服務器上安裝docker
參考之前的文章:
k8s集群部署_calico.v3.25.1.tar-CSDN博客?中的 ”二、安裝docker“ 步驟
2、環境驗證
docker -v
?
二、編寫dockerfile文件并提交代碼
1、IDEA上創建一個docker目錄,目錄下編寫dockerfile
1.1、創建dockerfile文件


dockerfile文件內容:
#penjdk:17 作為基礎鏡像
FROM openjdk:17# 設置工作目錄
WORKDIR /root# 將當前目錄下的所有文件復制到容器的 /app 目錄下
COPY ./javafile/*.jar /root/HelloWorld.jar# 暴露端口(假設你的 Java 應用監聽 8080 端口)
EXPOSE 8989# 定義容器啟動時執行的命令
ENTRYPOINT ["java", "-jar", "/root/HelloWorld.jar"]
1.2、修改代碼

2、提交并合并代碼


3、查看編譯之后的dockerfile的位置

4、在構建步驟中配置復制dockerfile到遠程主機并運行的步驟
4.1、傳輸多個文件的解決方法
要實現多個目錄下的文件傳輸再添加一個Transfer Set

4.2、配置jar和dockerfile的傳輸路徑?

4.3、配置docker鏡像建命令如果進行多次發布的在構建前要刪除掉之前運行的容器和鏡像
#刪除掉之前運行的容器
docker rm -f $(docker ps |grep helloworld|awk '{print $1}')#刪除掉之前的鏡像以免對系統資源造成浪費
docker rmi -f helloworld#構建新的java鏡像
docker build -t helloworld .#運行容器
docker run -d --name helloworld -p 8989:8989 helloworld

5、構建報錯排查思路
5.1、構建出現報錯排查思路
解決思路:先模擬Jenkins自動部署的步驟在測試機器上手動運行,如果運行沒有問題,再排查是否是其他問題引起的。

排查步驟一:查看測試機器上排查jar和dockfile文件是否已經傳輸成功
文件已經成功上傳到測試服務器對應目錄下

排查步驟二:執行dockerfile構建命令
發現test用戶沒有docker命令的執行權限

解決方法:
chmod 666 /var/run/docker.sock

5.2、再次構建

5.3、結果為:Finished: UNSTABLE情況分析
“Finished: UNSTABLE” 常見于持續集成 / 持續部署(CI/CD)工具的構建或任務執行結果反饋中,如 Jenkins、GitLab CI/CD 等。它表示任務已完成,但處于 “不穩定” 狀態,這意味著構建過程雖然結束,但存在一些不符合預期的情況,不過尚未達到構建失敗的嚴重程度。具體的含義和排查方向因工具和使用場景而異:
- 在 Jenkins 中
- 測試用例部分失敗:構建過程包含測試環節時,如果部分測試用例失敗,而構建本身仍能成功完成,任務狀態就會是 “UNSTABLE”。例如,一個 Java 項目構建,在單元測試中,10 個測試用例有 8 個通過,2 個失敗,就會出現這種狀態。你需要查看 Jenkins 構建記錄中的測試報告,找到具體失敗的測試用例,檢查相關代碼邏輯。
- 代碼質量問題:使用代碼質量檢查工具(如 Checkstyle、PMD 等)時,若代碼存在一些不符合規范的問題,構建也可能標記為 “UNSTABLE”。比如代碼中存在未使用的變量、過長的方法等。可以查看代碼質量檢查報告,按照規范修改代碼。
- 構建過程有警告:構建過程中,構建腳本(如 Maven、Gradle 腳本)執行時出現警告信息,可能導致狀態不穩定。例如,Maven 依賴下載時出現警告,提示某些依賴版本可能存在兼容性問題。此時,要檢查構建腳本的輸出日志,處理警告信息,比如更新依賴版本。
- 在 GitLab CI/CD 中
- 部分作業失敗:如果一個 CI/CD 流水線包含多個作業(jobs),部分作業成功完成,部分作業失敗,整個流水線狀態可能是 “UNSTABLE”。比如一個流水線包含代碼編譯、測試、部署三個作業,編譯和測試成功,但部署作業因權限問題失敗。需要查看每個作業的詳細日志,定位失敗作業的問題,解決部署權限等問題。
- 環境變量或配置問題:配置文件中的某些設置可能導致構建或部署過程不穩定。例如,在部署作業中,環境變量配置錯誤,使得應用部分功能無法正常初始化。要仔細檢查環境變量和配置文件,確保其正確性。
三、對自動構建結果進行測試
1、在測試機器上檢測運行的結果是否正常
步驟一:檢測目標文件是否成功上傳到測試機器上

步驟二:查看鏡像是否構建成功

步驟三:查看容器是否運行成功

步驟四:查看8989端口是都已經開啟

步驟五:訪問前端測試
瀏覽器上訪問url連接: http://192.168.72.132:8989/hello
