一.首先jenkins與docker的安裝參考下面鏈接
安裝jenkins:
https://www.cnblogs.com/jescs/p/7644635.html
二.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 容器名稱 。 查看日志,分析原因。
