使用Jenkins部署asp.net core


首先盜圖一張

1.在Github上創建一個測試倉庫

2.創建基於Asp.net Core的MVC項目

 運行解決方案,驗證代碼沒有問題,然后將代碼遷入Github

3.添加Docker支持

項目-->添加-->Docker 支持

提示框選擇【Linux】,點擊確定

系統會自動添加相應的Dockerfile文件和docker-compose文件

此處使用默認的Dockerfile,僅修改端口號,該端口號需要跟shell文件對應

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80

修改Dockerfile文件的屬性

向項目中添加setup.sh文件(之后的Jenkins會用到,此處與代碼並無關系)

 

文件中的內容如下: 

image_version=`date +%Y%m%d%H%M`; echo $image_version; # cd Jenkins2Docker
git pull --rebase origin master; docker stop jenkins2docker; docker rm jenkins2docker; docker build -t jenkins2docker:$image_version .; docker images; docker run -p 10001:80 -d --name jenkins2docker jenkins2docker:$image_version; # -v ~/docker-data/house-web/appsettings.json:/app/appsettings.json -v ~/docker-data/house-web/NLogFile/:/app/NLogFile --restart=always
docker logs jenkins2docker; #刪除build過程中產生的鏡像 #docker image prune -a -f
docker rmi $(docker images -f "dangling=true" -q)

完成以上操作后,將代碼遷入Github。

此處需要注意的是

 

4.配置Jenkins

4.1新建一個“自由風格的軟件項目”

4.2設置General信息

4.3配置源碼信息

4.4構建觸發器

(H/2表示2分鍾做一次查詢)

4.5設置構建環境

4.6構建選擇shell

4.7保存

點擊【應用】-->【保存】

頁面跳轉后,點擊【立即構建】(此處不點擊,2分鍾內也會自動構建

4.8查看構建結果

如圖顯示了5次構建,頭三次的紅色表示構建失敗,4、5次的藍色表示構建成功

5.驗證結果

5.1查看鏡像

鏡像到Tag是在shell文件中設置的,由時間字符串拼接而成,可以看到.net core生成的鏡像還是很小的,畢竟包含了一個253M的run-time。

5.2查看容器

 

IMAGE:此處看到容器構建依賴的鏡像,確實是我們剛剛生成的鏡像。

STATUS:如果status的狀態不是Up,可以通過Jenkins構建的后台查看是否構建出現問題。

PORTS:10001->80,80是我們在dockerfile中expose到端口,10001是容器創建時映射到服務器到端口。

5.3查看網址

 

6.寫在最后

不知是不是shell文件寫的有問題,亦或是我該改設置dockerfile生成路徑?

代碼遷入時需要修改下Dockerfile的路徑,即從Jenkins2Docker內改到上一級的目錄。

有明白的朋友可以留個言

 

7.參考

https://cloud.tencent.com/developer/news/223449

https://www.cnblogs.com/sunshine-wy/p/9860599.html

https://www.cnblogs.com/TomGui/archive/2017/04/06/6673084.html

 

8.常見錯誤

8.1.Dockerfile編譯報錯

Failed to build: Error parsing reference: “microsoft/dotnet:2.1-runtime AS base” is not a valid repository/tag

解決方法:

該問題出現的原因是docker的版本過低,具體如下

FROM microsoft/aspnetcore-build:2.0 AS buildenv Error parsing reference

centos7 docker升級到最新穩定版本

 

8.2報錯:鏡像被多個repositories引用

Error when deleting images - image is referenced in multiple repositories

docker rmi -f <IMAGE_ID>

參考:https://github.com/portainer/portainer/issues/497

 

8.3刪除虛掛鏡像

docker rmi $(docker images -f "dangling=true" -q)

參考:http://www.cnblogs.com/stulzq/p/8962388.html

 


免責聲明!

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



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