Net core 容器化部署

首先開啟 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