【问题标题】:Build and Publish Docker Image to Prod Env using Asp.Net Core使用 Asp.Net Core 构建和发布 Docker 镜像到 Prod Env
【发布时间】:2018-10-23 01:23:51
【问题描述】:
我对如何为生产环境的 Asp.Net Core 项目构建映像有点困惑,因为它应该使用 aspnetcore 映像而不是 aspnetcore-build,有人可以向我解释最好的方法请问如何为生产环境构建和推送映像?
我在release 模式下构建了解决方案,但我不确定VS 是否使用aspnetcore 映像创建了映像,因为当我发布Docker 时说它正在从aspnetcore-build 映像安装映像。
【问题讨论】:
标签:
docker
asp.net-core
visual-studio-2017
.net-core
docker-compose
【解决方案1】:
我已经想通了。 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 流程,而不是手动。