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

擁有豐富網站開發經驗,直播系統、POS系統、電子商務、平台網站、SEO,專業的網站開發鐵三工程師。

Expertise

前端(React)
後端(C#)
網路管理

Social Media

facebook github website

Related Posts

Http post request FromBody string always binding null in dotnet
Http post request FromBody string always binding null in dotnet
November 05, 2022
1 min

Quick Links

關於我

Social Media