自救必看三大準則

入門Docker,從 HelloWorld 開始

一、從 HelloWorld 開始:安裝 Docker 和啟動基礎設置

  1. 下載並安裝 Docker Desktop

    • 訪問 Docker 官網,下載並安裝 Docker Desktop for Windows,選擇 Windows-AMD64 版本。
  2. 啟動 Docker 和配置 WSL 2

    • 安裝完成後,打開 PowerShell(以管理員身份運行)。
    • 執行以下命令來啟用 WSL 2(Windows Subsystem for Linux):
      wsl --install
      wsl --version
  3. 驗證 Docker 是否安裝成功

    • 驗證 Docker 是否正常運行,並執行以下命令檢查 Docker 版本:
      docker --version
  4. 運行 HelloWorld 測試

    • 進一步檢查 Docker 是否啟動成功,運行 HelloWorld 容器:
      docker run hello-world
  5. 確保啟用必要的項目

    • 此時,你應該確認以下項目已成功啟用:
      • WSL 2
      • Hyper-V
      • Docker

二、設定 ASP.NET Core Docker 環境

  1. 創建 Dockerfile

    • 右鍵單擊你的方案根目錄,選擇 加入 -> 新項目,並命名為 Dockerfile
  2. 配置 Dockerfile

    • Dockerfile 中,將以下內容粘貼到其中:

      # 使用 .NET 8 基礎映像來運行應用
      FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 # 使用 .NET SDK 基礎映像來構建應用 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src # 複製 .csproj 文件並還原 NuGet 包 COPY ["方案資料夾/主要方案.csproj", "方案資料夾/"] RUN dotnet restore "方案資料夾/主要方案.csproj" # 複製整個專案並構建 COPY . . WORKDIR "/src/方案資料夾" RUN dotnet build "主要方案.csproj" -c Release -o /app/build # 發佈應用 FROM build AS publish RUN dotnet publish "主要方案.csproj" -c Release -o /app/publish # 從基礎映像創建最終的容器 FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "主要方案.dll"]
    • 根據你的專案結構,修改相應的文件和路徑。


三、構建 Docker 映像並運行容器

  1. 構建 Docker 映像

    • 打開 PowerShell,進入你的專案目錄並運行以下命令來構建 Docker 映像:
      docker build -t 主要方案-app .
  2. 運行容器

    • 運行容器並映射端口,將容器的 80 端口 映射到宿主機的 5000 端口

      docker run -d -p 5000:80 主要方案-app
    • 這樣,你就可以在瀏覽器中通過 http://localhost:5000 訪問你的應用。


四、其他常見問題及解決方案

1. 端口衝突問題

  • 如果 5000 端口 已被其他服務佔用,可以查看 Docker 容器的日誌來檢查實際運行的端口。

  • 打開 Docker Desktop GUI 或執行以下命令查看容器的日誌:

    docker logs 方案ContainerID
  • 你可以在日誌中查看 Now listening on: http://[::]:8080,表示容器正在監聽 8080 端口

  • 若不想重新配置端口映射(如果已有其他服務使用 5000 端口),你可以選擇將 Docker 容器映射到 8080 端口

    docker run -d -p 8080:8080 主要方案-app

2. 查詢端口占用情況

  • 若你不確定是什麼進程佔用了端口,可以使用以下命令查詢 5000 端口 的 PID:
    netstat -ano | findstr :5000
  • 查詢到的 PID 可以幫助你找到佔用端口的進程,然後通過以下命令終止該進程:
    tasklist /FI "PID eq <PID>"
    taskkill /PID <PID> /F

總結

  1. 安裝並配置 Docker Desktop,啟用 WSL 2 和 Hyper-V,並驗證 Docker 是否運行正常。
  2. 創建並配置 Dockerfile,設置 ASP.NET Core 應用的容器環境。
  3. 使用 docker build 構建映像,並使用 docker run 運行容器。
  4. 處理端口衝突問題,查詢佔用端口的進程,並根據需要進行端口映射。

留言

這個網誌中的熱門文章

IIS - ASP.NET 網站基本優化設定

Node.js 部署至 IIS 站台

遇見 Parameters 參數上限之大量資料寫入方法