我试图理解这个 Docker 文件中这一行的意义:
FROM build AS publish
如果我删除它,构建将失败并显示 => ERROR FROM docker.io/library/publish:latest
,因此显然需要它,但我不明白为什么。
在我看来好像没有必要,因为 publish
是与 build
相同图像的别名。 WORKDIR 没有改变 - 那么这条线是什么,这是不可能的?抱歉,如果这不是一个明确的问题,其中一些概念对我来说是新的。
FROM mcr.microsoft.com/dotnet/aspnet:5.0.5-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0.202-buster-slim AS build
WORKDIR /src
COPY NuGet.Config /
COPY ["Something.Api.Common/Something.Api.Common.csproj", "Something.Api.Common/"]
COPY ["Something.Api.Core.WebApi/Something.Api.Core.WebApi.csproj", "Something.Api.Core.WebApi/"]
COPY ["Something.Api.Core.Domain/Something.Api.Core.Domain.csproj", "Something.Api.Core.Domain/"]
RUN dotnet restore "Something.Api.Core.WebApi/Something.Api.Core.WebApi.csproj"
COPY . .
WORKDIR "/src/Something.Api.Core.WebApi"
RUN dotnet build "Something.Api.Core.WebApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Something.Api.Core.WebApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
...
答案 0 :(得分:0)
现在我自己回答这个问题。更改复制步骤允许我删除“额外”行。我不明白 --from
参数!
COPY --from=build /app/publish .