構建鏡像最具挑戰性的一點是使鏡像大小盡可能的小。Dockerfile中的每條指令都為圖像添加了一個圖層,您需要記住在移動到下一層之前清理任何不需要的工件。對於多階段構建,您可以在Dockerfile中使用多個FROM語句。每個FROM指令可以使用不同的基礎,並且每個指令都開始一個新的構建。您可以選擇性地將工件從一個階段復制到另一個階段,從而在最終image中只留下您想要的內容。 例如vs生成的dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src COPY ["DockerWeb/DockerWeb.csproj", "DockerWeb/"] RUN dotnet restore "DockerWeb/DockerWeb.csproj" COPY . . WORKDIR "/src/DockerWeb" RUN dotnet build "DockerWeb.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "DockerWeb.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "DockerWeb.dll"]