Mark Ku's Blog
在 ChatGPT 開啟在 Claude 開啟

為 .NET Core 專案建立 Dockerfile,加入 Node.js 依賴,使用 docker build 指令建置映像檔,再透過 docker run 啟動容器。

首先開啟 Visual Studio ,對要佈署的專案右鍵 > 加入 > 容器化支援(此時就會在 該專案檔目錄產生一個 DockerFile)

Visual Studio 專案右鍵加入 Docker 支援
Visual Studio 專案右鍵加入 Docker 支援

建置階段需要引入 node js ,否則會報錯

在 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build ,後面加入以下程式碼

# Install NodeJs
RUN apt-get update && \
apt-get install -y wget && \
apt-get install -y gnupg2 && \
wget -qO- https://deb.nodesource.com/setup_12.x | bash - && \
apt-get install -y build-essential nodejs
# End Install

調整完後的 Docker File

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
# Install NodeJs
RUN apt-get update && \
apt-get install -y wget && \
apt-get install -y gnupg2 && \
wget -qO- https://deb.nodesource.com/setup_12.x | bash - && \
apt-get install -y build-essential nodejs
# End Install
WORKDIR /
COPY ["Comma.Web/Comma.Web.csproj", "Comma.Web/"]
COPY ["Comma.Business/Comma.Business.csproj", "Comma.Business/"]
COPY ["Comma.Libray/Comma.Libray.csproj", "Comma.Libray/"]
COPY ["Comma.Common/Comma.Common.csproj", "Comma.Common/"]
COPY ["Comma.Repository/Comma.Repository.csproj", "Comma.Repository/"]
COPY ["Comma.Model/Comma.Model.csproj", "Comma.Model/"]
COPY ["Comma.Pagination/Comma.Pagination.csproj", "Comma.Pagination/"]
RUN dotnet restore "Comma.Web/Comma.Web.csproj"
COPY . .
WORKDIR "/Comma.Web"
RUN dotnet build "Comma.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Comma.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Comma.Web.dll"]

建立 Docker File 映像檔

因為 Dokcer COPY 的指令不支援上層目錄 (../),因此我們要從最上層目錄,指定 docker file ,來建立容器

docker build -t shopcart . -f ./Comma.Web/Dockerfile
PowerShell 執行 Docker build 建立 shopcart 映像檔
PowerShell 執行 Docker build 建立 shopcart 映像檔

檢查映像檔

docker Images
PowerShell 執行 docker images 結果
PowerShell 執行 docker images 結果

依據剛剛建立的映像檔,建立新的容器

docker run -d --name newwebsite -p 80:80 shopcart

此時就可以開啟,剛剛建立 Docker 容器網站,localhost:80

瀏覽器顯示 localhost 上的 Multikart 電商網站首頁
瀏覽器顯示 localhost 上的 Multikart 電商網站首頁

如果網站運行不起來,可以用 docker logs,可以用來顯示容器中的錯誤

docker logs newwebsite

匯出映像檔

docker save -o C:\Project\shopcart.tar shopcart

作者

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。現在經營貳陸資訊有限公司(www.226network.com),幫小公司做系統、網站、LINE BOT 與 AI 自動化,也在這裡分享開發筆記與開源工具。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··655

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··574

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··318

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··234

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··231

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
Mark Ku
··225

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1