在 Docker 中運行 .net 8 API

July 12, 2026

這篇文章教你從頭開始建立一個 Docker 環境,執行 .net 8 的 WebAPI。

步驟

1. 下載 Docker Desktop。

2. 建立 Dockerfile。

3. 建立 Docker Image,把 my-api  代換成專案名字。

docker build -t my-api .   

4.  啟動 container。

docker run -d -p 8080:8080 -e ASPNETCORE_ENVIRONMENT=Development -v xxx/secrets.Development.json:/app/secrets.development.json --name my-api-container my-api

常用的參數說明如下:

參數 說明
-d 在背景執行 container 並印出 ID
-p 設定對應的 port
-e 設定環境變數
-v 設定要掛載的檔案位置
-name 指派 container 名稱

參考資料:docker container run - Docker Docs

常見的 Secret 和 Log 可以用 -v 掛載到實體目錄,需要更改 API 本身設定的 Secret 和 Log 路徑。

5. (建議) 加入 .dockerignore,略過那些不用包進映像檔的檔案。

Dockerfile 檔案

基本指令如下:

指令 說明
FROM 要從哪裡取得映像檔
WORKDIR
容器啟動時的工作目錄
COPY COPY - 複製 ${目前本機目標位置的檔案} 到 ${容器目標位置}
EXPOSE 輸出的 Port
USER 執行的使用者

編譯時可以用較完整的 .NET 8 SDK 映像檔,包含編譯器和其它的 .NET 依賴元件;實際執行時可以用只包含 ASP.NET 執行環境的映像檔,因為容量較小,便於部屬。

官方 .NET Docker 映像 - .NET - Microsoft Learn

[CI/CD Note] — 透過 Docker 快速建立及部署環境 - RexHung’s Blog

檢查是不是在 Docker 內運作

要讓程式檢查是不是在 Docker 內運作,可以存取環境變數 DOTNET_RUNNING_IN_CONTAINER  :

bool inDocker = Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER") == "true";

參考資料:.NET 環境變數 - .NET CLI - Microsoft Learn