Azure Devops實踐(5)- 構建springboot項目打包docker鏡像及容器化部署
- 2021 年 10 月 13 日
- 筆記
- Azure DevOps
使用Azure Devops構建java springboot項目,創建鏡像並容器化部署
1、創建一個springboot項目,我用現有的項目
-
目錄結構如下,使用provider項目
-
在根目錄下添加Dockerfile文件,文件內容如下
-
參考程式碼:
# Docker image for springboot file run # VERSION 0.0.1 # Author: xujk # 基礎鏡像使用java FROM java:8 # 作者 MAINTAINER xujk <[email protected]> # VOLUME 指定了臨時文件目錄為/tmp。 # 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp VOLUME /tmp # 將jar包添加到容器中並更名為app.jar ADD target/provider-0.0.1-SNAPSHOT.jar app.jar # 運行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] #設置時區 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
2、在Devops創建項目,添加管道
-
添加git程式碼倉庫連接
-
選擇模板,maven項目
-
選擇Default代理池
-
配置maven pom.xml文件的路徑
-
後面默認的設置即可,先測試打包功能
運行管道,報錯:在池 Default 中找不到滿足指定要求的代理: maven, Agent.Version -gtVersion 2.144.0
分析應該是代理池主機上,沒有安裝maven,安裝maven,參考url://www.cnblogs.com/wqlken/p/14090525.html, 在代理主機上安裝maven -
安裝完後,還是不行,重啟了一下虛擬機,運行管道,maven打包springboot項目
-
jar包重新構建完成
-
修改pom.xml文件配置,構建provider項目
點擊取消鏈接,修改pom.xml文件路徑,改為構建provider,重新下構建打包,成功
-
添加一個作業,生成docker鏡像,並推送到鏡像伺服器
-
運行管道,構建鏡像並推送到docker hub上
-
添加刪除鏡像步驟,腳本可參考前面兩篇構架.netcore的文章
注意:鏡像名稱都是小寫,不知為何名稱指定有大寫,但是生成完只會都變成小寫
運行完之後,就只剩下最新的鏡像了,老版本都已刪除
3、新建發布管道,部署應用
-
新建一個空作業
-
配置好項目
-
寫入發布腳本
-
腳本參考
#!/bin/bash name="springboot01" cid=`docker inspect --format '{{.Id}}' ${name} 2>/dev/null` if [[ ${#cid} -gt 0 ]]; then docker stop $name docker rm $name echo "successed deleted container ${name}" fi imageid=`docker images --format {{.ID}} $name` echo "準備刪除舊鏡像${imageid}" if [[ ${#imageid} -gt 0 ]]; then docker rmi -f $imageid echo "successed deleted old image ${name}" fi docker pull docker.io/xjk27400861/springbootapp:$(Build.BuildId) docker tag docker.io/xjk27400861/springbootapp:$(Build.BuildId) springbootapp:$(Build.BuildId) docker run -it -d -p 8003:8080 --name springboot01 --privileged=true springbootapp:$(Build.BuildId) docker logs springboot01
-
發布,部署應用
-
訪問服務://192.168.231.139:8003/hello
-
部署成功