🐳【Docker 打包 .NET Core 應用程式】從入門到上線的完整流程教學
🔍 前言
你是否也想將 .NET Core
應用程式打包進 Docker,讓部署變得更彈性、更雲端?這篇教學將一步步帶你從環境準備、Dockerfile 撰寫、建構映像到運行容器,搭配實務建議與圖示說明,幫助你一次搞懂 .NET Core 容器化流程
。
🧰 1. 開始之前:準備工具
請先確認以下工具已安裝於系統中:
-
✅ Docker(建議搭配 Docker Desktop)
-
✅ Visual Studio Code
-
✅ .NET SDK(建議使用 .NET 8)
📦 2. 撰寫 Dockerfile
在專案根目錄中新增 Dockerfile
,內容如下:
# 使用 .NET 執行階段作為基礎映像
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
# 使用 SDK 建構應用程式
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app
# 將 build 結果複製到 base 映像中
FROM base AS final
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "Net.dll"]
# 開放容器內部端口(不代表自動對外)
EXPOSE 5160
📌 注意:EXPOSE 只是聲明開放端口,並不會主動映射主機端口,需在 docker run
時指定。
🔧 3. 建構 Docker 映像檔
在終端機執行以下指令,依據 Dockerfile
建立映像:
docker build -t net_app .
net_app
的映像,供後續使用。▶️ 4. 執行容器並開放對外端口
接著執行容器,並將內部的 80 port 映射到主機的 5163:
docker run -d -p 5163:80 --name net_container net_app
說明:
-
-d
:背景執行容器 -
-p 5163:80
:將容器的 80 映射到主機 5163 -
--name net_container
:容器命名為net_container
🌐 5. 設定應用程式監聽 0.0.0.0
為了讓應用可從外部訪問,記得設定 ASP.NET Core 監聽所有 IP(非僅限 localhost):
ENV ASPNETCORE_URLS=http://+:80
appsettings.json
或 .env
檔依情況調整。✅ 6. 測試應用是否成功運行
使用瀏覽器或終端機測試服務是否啟動成功:
若一切正常,應會收到應用程式的回應。
🧹 7. 清理資源(可選)
當你不再需要該容器或映像,可使用以下指令移除:
docker stop net_container
docker rm net_container
docker rmi net_app
🧠 總結
本文帶你從零開始,學會如何:
-
撰寫 Dockerfile
-
建立與執行 Docker 映像
-
設定對外通訊與環境變數
-
測試與管理容器資源
📬 後續教學預告:
若你有興趣,我將在後續分享:
-
如何整合 Docker Compose 部署多服務
-
.NET 與 PostgreSQL / Redis 的 Docker 範例
-
使用 GitHub Actions 自動建構 Docker 映像
歡迎留言與我分享你遇到的問題或期待的主題 👇
一起把 .NET 工程玩到極致!
留言
張貼留言