标签:back from builds 开始 src 工具 spn 导致 nuget
在编写Dockerfile构建docker镜像时,常遇到以下问题:
为了解决上述问题,从17.05版本开始Docker在构建镜像时增加了新特性:多阶段构建(multi-stage builds),将构建过程分为多个阶段,每个阶段都可以指定一个基础镜像,这样在一个Dockerfile就能将多个镜像的特性同时用到,例如:先用SDK镜像构建.NET Core工程,再把构建结果和Runtime 合成,就做成了一个可以直接运行.NET Core工程镜像了;
官方描述如下图所示,地址是:https://docs.docker.com/develop/develop-images/multistage-build/
官方的实例是golang的,今天我们以.NET Core构建ASP.NET Core工程为例,介绍如何使用multi-stage特性构建.NET Core微服务镜像;
### 第一阶段,用sdk 镜像进行编译
FROM microsoft/dotnet:2.1.300-sdk AS build-env
WORKDIR /TechTalksWeb
COPY NuGet.config ./
COPY TechTalksWeb.csproj ./
RUN dotnet restore
COPY . ./
#编译构建
RUN dotnet publish --configuration Release --output releaseOutput --no-restore
#build runtime image
### 第二阶段,用第一阶段的.NET Core编译文件和aspnetcore-runtime 镜像合成一个小体积的镜像
FROM microsoft/dotnet:2.1.0-aspnetcore-runtime
WORKDIR /TechTalksWeb
#从名为build-env的stage复制构建结果到工作目录
COPY --from=build-env /TechTalksWeb/releaseOutput ./
ENTRYPOINT ["dotnet", "TechTalksWeb.dll"]
上面就是分成了两个阶段构建的Dockerfile脚本,请参考每行的注释来理解,有以下几点需要重点关注:
Docker多阶段构建实战(multi-stage builds)
标签:back from builds 开始 src 工具 spn 导致 nuget
原文地址:https://www.cnblogs.com/shanyou/p/12088659.html