docker的多级构建

aside section ._1OhGeD · · 790 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 中。

————————————————

版权声明:本文为CSDN博主「jxxiaocunguan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jxxiaocunguan/article/details/80848981


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:docker的多级构建

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

790 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传