码迷,mamicode.com
首页 > 其他好文 > 详细

[Docker] 使用 Dockerfile 的多级构建 (multi-stage builds)

时间:2018-06-28 21:12:30      阅读:540      评论:0      收藏:0      [点我收藏+]

标签:logs   pre   cache   dock   org   copy   add   cert   exe   

 
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
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
 
FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]  

$ docker build -t alexellis2/href-counter:latest .
 
最终结果是同样小的生产环境 image,并显著减小了复杂性。
 
不需要创建任何中间 image,并且你不需要提取任何文件到本地系统中。
 
它是如何工作的?
  1. 第二个 FROM 指令使用 alpine:latest 作为基础 image 开启一个新的构建阶段。
  2. COPY --from=0 这一行拷贝前一个阶段构建的产品到这个新的阶段中。GO SDK 和其它中间产品被留下,并且不会被保存到最终的 image 中。
 
 

[Docker] 使用 Dockerfile 的多级构建 (multi-stage builds)

标签:logs   pre   cache   dock   org   copy   add   cert   exe   

原文地址:https://www.cnblogs.com/farwish/p/9240609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!