將 vs 專案包成 docker image

 

一、準備一個 .net core 6.0 mvc 專案

二、publish 該專案至一資料夾
實際資料位置如下


三、編寫 dockerfile 將所 publish 的檔案包成 docker image
dockerfile 實際資料位置如下

dockerfile 內容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 以 mcr.microsoft.com/dotnet/aspnet:6.0 映像檔為基底
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS mybase

# 指定 docker 裡的工作資料夾
WORKDIR /app

# 指定 docker 裡的 port 80 露出給外界使用
EXPOSE 80

# 將外界的 publish 資料夾底下的所有內容複製到 docker 內部的 app 工作資料夾底下
COPY publish/ ./

# 設定映像檔啟動為 Container 時預設要執行的指令
# 相等於執行 dotnet WebApplication1.dll 指令
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

於 terminal 建置 docker image

1
$ docker build -t my-title-image .

指令說明:

  1. -t 表示指定 image 的 title。
  2. 「.」這表示當前目錄。當您運行 “docker build .” 時,Docker 會在當前目錄中查找一個名為 “Dockerfile” 的文件。


四、將該 image 註冊至 container 執行


或是於 terminal 執行以下指令

1
$ docker run -it --rm -p 0:80 --name my-container my-title-image

指令說明:

  1. -it: 這是兩個選項的組合。-i 選項表示保持 STDIN 打開,而 -t 選項表示分配一個虛擬終端(TTY)。這兩個選項通常一起使用,以便您可以與容器進行交互。
  2. –rm: 這個選項表示當容器停止運行時,自動刪除容器。這是一個有用的選項,可以幫助保持您的系統乾淨,不會留下停止運行的容器。

參考資料:
Docker – Dockerfile 指令教學,含範例解說