Mark Ku's Blog
首頁 關於我
Net core 容器化部署
NETCORE
Net core 容器化部署
Mark Ku
Mark Ku
June 05, 2021
1 min

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

建置階段需要引入 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

檢查映像檔

docker Images

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

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

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

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

docker logs newwebsite

匯出映像檔

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

Tags

Mark Ku

Mark Ku

Software Developer

8年以上豐富網站開發經驗,直播系統、POS系統、電子商務、平台網站、SEO、金流串接、DevOps、Infra 出身,帶過幾次團隊,目前專注於北美及德國市場電商網站開發團隊。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

使用 Seq log server 達成金流及訂單異常事件監控通知
使用 Seq log server 達成金流及訂單異常事件監控通知
April 18, 2023
1 min

Quick Links

關於我

Social Media