Fré*_*ect 5 image docker dockerfile
我想知道的区别FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base和FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build。你能解释一下之间的区别AS base和AS build?
这是dockerfileVisual Studio 生成的默认值:
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Run Code Online (Sandbox Code Playgroud)
没有功能差异,它只是构建阶段的名称。在 dockerfile 的这个阶段构建的图像(阶段以FROM关键字开头并在下一个之前结束FROM)将在以后使用该名称访问。
可以选择通过将 AS 名称添加到 FROM 指令来为新构建阶段指定名称。该名称可用于后续的 FROM 和 COPY --from=<name|index> 指令以引用在此阶段构建的映像。
例如,姓名foo和bar
FROM image AS foo
...
...
FROM foo AS bar
...
...
FROM foo
COPY --from=bar
Run Code Online (Sandbox Code Playgroud)
它是在 17.05 中添加的,用于多阶段构建,更多相关信息:https : //docs.docker.com/develop/develop-images/multistage-build/