zoukankan      html  css  js  c++  java
  • [Docker] 使用 Dockerfile 的多级构建 (multi-stage builds)

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

  • 相关阅读:
    1.表单标签
    07.Ajax.post
    06.Ajax.get
    05.Ajax.get
    04.Ajax-get.html
    03.post.file
    nodejs-7.2. CURD数据管理系统小栗子
    nodejs-7.1. mongoose模块
    JS 无缝轮播图1-节点操作
    JS 放大镜特效
  • 原文地址:https://www.cnblogs.com/farwish/p/9240609.html
Copyright © 2011-2022 走看看