我对如何为生产环境的 Asp.Net Core项目构建映像有点困惑,因为它应该使用aspnetcore
映像而不是aspnetcore-build
,有人可以解释如何为生产环境构建和推送映像的最佳方法,请问?
我在release
模式下构建了解决方案,但我不确定 VS 是否使用aspnetcore
映像创建了映像,因为当我发布 Docker 时说它正在从aspnetcore-build
映像挂载映像。
我已经想通了。Visual Studio 在创建 Docker 文件时使用 Docker 多阶段构建,因此当它生成 Docker 映像时,最终它使用的是aspnetcore
映像,这是在 Docker 文件上声明的最后一个阶段构建,并且它使用base
阶段,实际上是aspnetcore
映像。这是一个示例:
FROM microsoft/aspnetcore:2.0.5 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0.5-2.1.4 AS build
WORKDIR /src
COPY . .
RUN dotnet restore -nowarn:msb3202,nu1503
WORKDIR /src/src/Services/Catalog/Catalog.API
RUN dotnet build --no-restore -c Release -o /app
FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Catalog.API.dll"]
因此,构建和发布 Docker 映像的推荐方法是从我们的 CI/CD 流程而不是手动
。