Jenkins+docker自動化部署管理springBoot專案
* 伺服器環境支援 Jenkins服務+Git+Maven+Docker
1.開啟jenkins構建一個maven專案,名字取為maven-test
2.填寫jenkins配置
3.立即構建
到此jenkins構建成功 我們可以拿到專案構建的最新jar包(/root/.jenkins/workspace/docker-test/target/docke-test.jar),接下來就要考慮怎麼把jar包自動化部署到docker容器中。
4.編寫Dockerfile檔案
在專案操作的路徑(/work/project)下建立Dockerfile檔案
編輯Dockerfile檔案內容為
#基於openjdk:8 FROM openjdk:8 # 指定當前操作目錄 WORKDIR /work/project #容器啟動後執行的操作 CMD java -jar docker-test.jar
5.編寫jenkins中打包成功後執行的shell指令碼
開啟jenkins中的配置選擇 Pre Steps - Add post-build step - 執行shell
指令碼值設定為
#操作/專案路徑(Dockerfile存放的路勁) BASE_PATH=/work/project # 源jar路徑 SOURCE_PATH=/root/.jenkins/workspace #docker 映象/容器名字或者jar名字 這裡都命名為這個 SERVER_NAME=docker-test #容器id CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}') #映象id IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}') DATE=`date +%Y%m%d%H%M` # 最新構建程式碼 移動到專案環境 function transfer(){ echo "最新構建程式碼 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 遷移至 $BASE_PATH ...." cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar $BASE_PATH echo "遷移完成" } # 備份 function backup(){ if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then echo "$SERVER_NAME.jar 備份..." cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar echo "備份 $SERVER_NAME.jar 完成" else echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳過備份" fi } # 構建docker映象 function build(){ if [ -n "$IID" ]; then echo "存在$SERVER_NAME映象,IID=$IID" else echo "不存在$SERVER_NAME映象,開始構建映象" cd $BASE_PATH docker build -t $SERVER_NAME . fi } # 執行docker容器 function run(){ backup transfer build if [ -n "$CID" ]; then echo "存在$SERVER_NAME容器,CID=$CID,重啟docker容器 ..." docker restart $SERVER_NAME echo "$SERVER_NAME容器重啟完成" else echo "不存在$SERVER_NAME容器,docker run建立容器..." docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 3636:3636 $SERVER_NAME echo "$SERVER_NAME容器建立完成" fi } #入口 run
這段shell指令碼大致流程
a.備份(/work/project)下jar包
cp /work/project/docker-test.jar /work/project/backup/docker-test-201805171416.jar
b.專案構建的最新jar包(/root/.jenkins/workspace/docker-test/target/docke-test.jar)移動到專案操作的路徑(/work/project)
cp /root/.jenkins/workspace/docker-test/target/docker-test.jar /work/project
c.判斷docker映象是否存在,不存在則進入Dockerfile存放的路徑(/work/project)執行docker build操作構建名字為docker-test映象
cd /work/project
docker build -t docker-test .
d.判斷docker容器是否存在,不存在則執行docker run命令建立容器,存在則docker restart重啟容器
docker run --name docker-test -v /work/project/:/work/project/ -d -p 3636:3636 docker-test
docker restart docker-test
docker run引數
--name docker-test 容器的名字為docker-test
-d 容器後臺執行
-p 3636:3636 指定容器對映的埠和主機對應的埠都為3636
-v /work/project/:/work/project/ 將主機的/work/project/目錄掛載到容器的/work/project/ 目錄中(不可少每次本地更新jar包重啟容器即可,不用重新構建映象)
6.效果檢測
上步操作指令碼寫好儲存後 點選立即構建檢視日誌如下圖代表專案自動化打包構建成功
檢視映象
檢視容器
訪問專案
編輯介面返回值,提交程式碼
點選立即構建,構建成功訪問專案
可以發現專案修改重新自動部署成功~~~