1. 程式人生 > 實用技巧 >jenkins 構建dotnet core 部署到docker

jenkins 構建dotnet core 部署到docker

1.azure centos 8 docker環境,整個操作在root賬號下進行

2.安裝jenkins

進入jenkis官網的安裝指導安裝jenkins jenkins安裝成功後檢視程序

3.使jenkins賬戶可以訪問docker.sock

因為要在jenkins中指定docker命令要用到docker.sock進行通訊。

檢視docker.sock所屬組

可以看到檔案屬於farvison組

執行gpasswd -a jenkins farvison //把jenkins使用者加入到farvison組

這行 newgrp farvison //更新farvison組

4.建立aspnnetweb專案,並勾選docker支援

這是後會生成dockerfile檔案,但是這個目錄結構和構建時候有出入。所以要把dockerfile拷貝到程式碼的根目錄(sln檔案所在目錄)

本地硬碟的結構如圖:

5.把整個程式碼上傳到gitea

gitea的安裝請參考gitea文件,push以後的程式碼結構如圖

6.在jenkins中建立任務

docker命令的寫法很重要。

#!/bin/bash
docker stop aspnetweb
docker rm aspnetweb
docker rmi aspnetweb
docker build -t aspnetweb . --network=host
docker run -d -p:5000:80 --name aspnetweb aspnetweb

首先docker命令預設的工作目錄為當前jenkins的project(job)的目錄

dockerfile正是在這個目錄下,這樣docker build -t aspnetweb . --network=host才會生成映象。

dockerfile之所以要放在根目錄是因為dockerfile的檔案內容有關係

這樣.csproj檔案才會和硬碟目錄對應起來。我試過更改dockerfile檔案內容把

COPY ["WebApplication5/WebApplication5.csproj", "WebApplication5/"]

改成

COPY ["WebApplication5.csproj", "WebApplication5/"]

同時把dockerfile檔案放到根目錄下的WebApplication5下面如圖

但沒有構建成功,對生成的dockerfile還不是很熟悉。

7.執行任務構建

檢視容器和映象

9.瀏覽器訪問網站

1.要開啟firewall防火牆

$ sudo firewall-cmd --zone=public --add-port=5000/tcp

2.azure的“”網路“”選單中增加5000埠的入站規則

因為swagger需要專案的xml檔案,但是在dockerfile中沒有複製到映象中,所以會報錯而不能訪問網站

解決方法是在dockerfile中增加一行指令:

把application.xml從WebApplication5/目錄拷貝到/app目錄下,再重新執行構建任務,就可以正常訪問。

到此.net core的整個構建告一段落。