Multi-stage build 即在一个 Dockerfile 中使用多个 FROM 指令. 每个 FROM 指令可以使用不同的基础镜像,并且每一个都开启新的构建阶段. 你可以有选择地拷贝一个阶段的产品到另一个中,留下不想包含在最终 image 中的东西. FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html COP…
构建镜像最具挑战性的一点是使镜像大小尽可能的小.Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件.对于多阶段构建,您可以在Dockerfile中使用多个FROM语句.每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建.您可以选择性地将工件从一个阶段复制到另一个阶段,从而在最终image中只留下您想要的内容. 例如vs生成的dockerfile: FROM microsoft/dotnet:2.1-aspnetcore-run…
多阶段构建就是在一个Dokcerfile中定义多个FROM,每个FROM都可以使用不同的基础镜像,并表示开始一个新的构建阶段,我们可以很方便的将一个阶段的文件复制到另外一个阶段中,在最终的阶段保存你需要使用的镜像即可. 比如定义如下Dockerfile FROM golang AS build-env ADD . /go/src/app WORKDIR /go/src/app RUN go get -u -v github.com/kardianos/govendor RUN govendor…