docker+jenkins實現spring boot項目持續集成自動化部署


一.首先jenkins與docker的安裝參考下面鏈接
 
 
 
二.Jenkins配置
 
1.打開jenkins構建一個maven項目,名字取為ms_backend.
 

 

2.填寫jenkins配置

 

 

 

 

 

以上jenkins配置就完成了。
 
三.對docker的配置(重點,因為我把所有的配置都放在docker.sh中,也是出於安全的考慮)
 
1.進入雲服務器中到項目的目錄下即 /usr/ms_backend
 
2.在該目錄下創建並編寫Dockerfile文件
 1 [root@iZuf635fwy8k6ubk6r9yonZ ms_backend]# vim Dockerfile 
 2 
 3 FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8      //下載maven與java的鏡像
 4 # 指定當前操作目錄
 5 WORKDIR /usr/ms_backend                                           
 6 #指定對外端口號
 7 EXPOSE 8040          
 8 #啟動java程序
 9 #--spring.profiles.active=dev 多環境下指定環境 。 -c為清除以前啟動的數據
10 ENTRYPOINT ["java","-jar","ms_backend.jar","--spring.profiles.active=dev","-c"]
3.創建配置docker.sh腳本
 
先看下jenkins構建后項目存放的路徑,以便在docker.sh中用到

 

 1 [root@iZuf635fwy8k6ubk6r9yonZ ms_backend]# vim docker.sh 
 2 #操作/項目路徑(Dockerfile存放的路勁)
 3 BASE_PATH=/usr/ms_backend
 4 # 源jar路徑  即jenkins構建后存放的路徑(
 5 
 6  7 SOURCE_PATH=/var/lib/jenkins/workspace
 8 #docker 鏡像/容器名字或者jar名字 這里都命名為這個
 9 SERVER_NAME=ms_backend
10 #容器id
11 CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
12 #鏡像id
13 IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
14 
15 echo "最新構建代碼 $SOURCE_PATH/$SERVER_NAME/target/ms_backend.jar 遷移至 $BASE_PATH ...."
16 #把項目從jenkins構建后的目錄移動到我們的項目目錄下同時重命名下
17  mv $SOURCE_PATH/$SERVER_NAME/target/ms_backend-0.0.1-SNAPSHOT.jar $BASE_PATH/ms_backend.jar
18 #修改文件的權限
19  chmod 777 /usr/ms_backend/ms_backend.jar
20  echo "遷移完成"
21 
22 
23 # 構建docker鏡像
24         if [ -n "$IID" ]; then
25                 echo "存在$SERVER_NAME鏡像,IID=$IID"
26         else
27                 echo "不存在$SERVER_NAME鏡像,開始構建鏡像"
28                         cd $BASE_PATH
29                 docker build -t $SERVER_NAME .
30         fi
31 
32 # 運行docker容器 33 docker rm $SERVER_NAME //刪除原來的容器 34 # --name docker-test 容器的名字為docker-test 35 # -d 容器后台運行 36 # -p 3636:3636 指定容器映射的端口和主機對應的端口都為3636 37 # -v /usr/ms_backend/:/usr/ms_backend/ 將主機的/usr/ms_backend/目錄掛載到容器的/usr/ms_backend/ 目錄中(不可少每次本地更新jar包重啟容器即可,不用重新構建鏡像 38 docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8040:8040 $SERVER_NAME 39 echo "$SERVER_NAME容器創建完成"
以上配置全部完成
 
四.構建的過程可能出現的問題
 
1.jenkins 啟動 docker /usr/bin/docker-current: Got permission denied while trying to connect to the Docker daemon socket at
答:權限問題 。 需要把jenkins用戶加入到dockerroot組中
 
2.containerd: start container” error=“oci runtime error: container_linux.go:247: starting container process caused “process_linux.go:245: running exec setns process for init caused \“exit status 17\””\n”
答:這個問題是因為linux內核版本的問題,運行dockerlinux內核版本應在3.10以上。所以需要升級linux內核
 
3.docker . Unable to access jarfile問題
需要在Dockerfile中指定目錄
 
4.spring boot多環境配置方法

 

5.如果docker run 容器運行成功后立馬意外退出exit(1)
可以通過docker logs 容器名稱 。 查看日志,分析原因。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM