在 Ubuntu 使用 Docker 建構 ASP.NET Core 6 開發環境
大约 2 分鐘
Docker 安裝
參考官方文件選定版本
官方的 dotnet-docker github
這裡非常重要!!! 千萬不要選錯版本!!!
選定正確版本
這裡有個方法幫助辨識選定正確的版本
開啟 Visual Studio 2022 ,選擇要建置的專案類型後,勾選 Docker 選項
![[dot_net_6_docker_4.jpg]]
專案建立之後進去看 Dockerfile
的內容,可以看到使用的映像檔是 aspnet
![[dot_net_6_docker_5.jpg]]
取得 Dockerfile
到 dockerhub 取得官方提供的映像檔案
https://hub.docker.com/_/microsoft-dotnet-sdk
![[dot_net_6_docker_1.jpg]]
選擇對應的版本
本次安裝的是 .Net Core 6 所以選擇反白的選項
![[dot_net_6_docker_2.jpg]]
建立 Dockerfile
# 建置編譯階段 Image, from dotnet/sdk, 並指定工作目錄為 /source
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source
# COPY 本機的所有檔案到 build image source 目錄下, 並執行套件還原指令, 此步驟需連網
COPY . .
RUN dotnet restore
# 執行 dotnet build 指令
RUN dotnet build
# 執行 dotnet 發佈指令, 並指定為 Release 版本
RUN dotnet publish -c release --no-restore -o /app
# 建置執行階段 Image, from dotnet/aspnet image, 並指定工作目錄為 /app
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
ENV TZ="Asia/Taipei"
WORKDIR /app
# COPY 編譯階段已產生的發佈檔至 /app 下
COPY /app .
# 透過 Kestrel 啟動專案服務
ENTRYPOINT ["dotnet", "test.dll"]
執行映像檔建立指令
sudo docker build -t pamis/asp-net-core-6-api -f Dockerfile .
Docker Compose
# sudo docker compose up -d
# 使用 3.8 版的設定檔,通常新版本會有新的功能,並支援新的設定參數
version: '3.8'
services:
asp-net-core-6-api:
image: 'pamis/asp-net-core-6-api:latest'
container_name: asp-net-core-6-api
restart: unless-stopped
ports:
- '8080:80' # Public HTTP Port
- '8081:443' # Public HTTPS Port
volumes:
- aspnet_app:/app
- aspnet_https:/https
volumes:
aspnet_app:
name: "aspnet_app"
aspnet_https:
name: "aspnet_https"
參考資料
使用 Docker 建立.NET 6 容器
.NET Core 的 Dockerfile 指令詳解
ASP.NET Core Docker 單兵徒手基本教練