利用 Dockerfile 建立 ASP.NET Core 5 映像檔

由於 .NET Core 跨平台,除了可以部署在 VM 的 IIS 之外,Docker 也是選項之一,它的使用體驗甚至比 VM 還要來的好,部署速度也比 VM 快很多

稍微解釋一下接下來要做的事

  1. 建立 ASP .NET  Core 專案
  2. 建置 ASP .NET  Core 專案
  3. 把建置 ./bin/Debug/net5.0/ 結果放到 Docker Image 內,建置 Image

開發環境

前置條件(選項)

我想要在 WSL 裡調用 dotnet cli,得在 WSL 上面安裝 .NET 5 SDK,如果你使用 Powershell / cmd 這個就不是必要的

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-5

 

步驟

有關 ASP.NET Core 專案,你可以使用 VS IDE / Rider,以下我會使用 CLI 操作

 

建立 ASP.NET Core 專案

cd /mnt/d/src/lab/
dotnet.exe new mvc -o WebServer

 

進入專案資料夾

cd WebServer

 

執行結果如下圖:

 

建置 ASP.NET Core 專案

執行時可以指定要建置的專案檔;沒有指定時會搜尋目前工作目錄中副檔名結尾為 proj 的檔案,並使用該檔案。

dotnet.exe build .

or

dotnet.exe build ./WebServer.csproj

 

執行結果如下圖:

 

執行目前工作目錄中的專案,看看能不能正常的運行

dotnet.exe run -p .

or

dotnet.exe run -p ./WebServer.csproj

 

執行結果如下圖:

CLI 出現這樣的畫面,瀏覽器也可以正常的訪問網站,代表站專案目前是正常的,按下 Ctrl+C 離開服務。

接下來我就要將站台放到 container 裡面,以下則是使用 dockerfile 的方式建立 image

 

建立 dockerfile

建立一個檔案名為 dockerfile,你可以選擇用 vim 或是 vs code

vim 安裝位置

choco install vim

vs code 安裝位置

choco install vscode

 

開啟/建立 dockerfile,以下方法則一

vim dockerfile
Code . dockerfile

 

輸入以下內容

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:5.0

WORKDIR /app
COPY ./bin/Debug/net5.0/ .
COPY ./wwwroot ./wwwroot

ENTRYPOINT ["dotnet", "WebServer.dll"]

 

輸入 :wq 存檔後離開

:wq 

 

建置 Image

docker build -t yao:1 .

 

執行結果如下圖

 

運行 Container

docker images
docker run -it -p 9527:80 yao:1

 

執行結果如下圖:

 

這時候 ASP .NET Core 5 已經在 Container 裡面運行,這跟以往把站台部署到 VM 一樣;由於,我將 host 的 9527 對應到 Ccontainer,這時訪問 http://localhostL9527 就是我們的目標服務位置

 

參考

Dockerize ASP.NET Core 應用程序 | Docker 文檔

謝謝好友安德魯大神火力支援

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo