docker

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 ~


,

Related posts

Latest posts