跳至主要內容

在 Ubuntu 使用 Docker 建構 ASP.NET Core 6 開發環境

Pamis Wang大约 2 分鐘後端ASP.NET CoreASP.NET Core 6Docker

Docker 安裝

在 Ubuntu 上安裝 Docker

參考官方文件選定版本

官方的 dotnet-docker githubopen in new window
這裡非常重要!!! 千萬不要選錯版本!!!
參考官方文件選定版本

選定正確版本

這裡有個方法幫助辨識選定正確的版本
開啟 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-sdkopen in new window

![[dot_net_6_docker_1.jpg]]

選擇對應的版本

本次安裝的是 .Net Core 6 所以選擇反白的選項
![[dot_net_6_docker_2.jpg]]

建立 Dockerfile

參考官方的範例來改open in new window

# 建置編譯階段 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 --from=build /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 容器open in new window
.NET Core 的 Dockerfile 指令詳解open in new window
ASP.NET Core Docker 單兵徒手基本教練open in new window

上次編輯於:
貢獻者: pamis,EXMAIL\pamis,Pamis Wang