ASP.NET Core 5 EP 17:撰寫Docker File並編譯成Image在Docker裡運行
編譯Docker Image
第1步:使用Command + P叫出對話匡,並以輸入>docker來指定Add Docker Files to Workspace功能,該功能可以幫我們建立Dockerfile。
第2步:選擇.NET: ASP.NET Core。
第3步:除了Windows外,不論是哪一個Linux發行版或Mac,都選擇Linux。
第4步:設定服務接聽Port,在這裡就保持ASP.NET Core預設的5000。
第5步:選擇Yes,讓工具自動完成docker-composes。
第6步:Docker工具會自動產生下圖紅匡處的4個檔案,其中Dockerfile最為重要,是定義這個Container服務的定義檔,Docker會依據Dockerfile來啟動服務。
第7步:調整Dockerfile內的設定,將ENV ASPNETCORE_URLS接聽的IP從+號改為*號,讓服務接聽所有IP。
FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 5000
# 把+號改為*號。
#ENV ASPNETCORE_URLS=http://+:5000
ENV ASPNETCORE_URLS=http://*:5000
# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["CookbookApi.csproj", "./"]
RUN dotnet restore "CookbookApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "CookbookApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "CookbookApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CookbookApi.dll"]
第8步:在Docker的畫面上就可以看到剛剛建置好的Image檔。
第9步:將上述的Image檔以容器形式啟動,輸入容器的名稱與對外服務的Port號。
第10步:可以透過http://127.0.0.1:5000/api/recipe測試之前寫的Restful API。
相關文章
~ END ~