加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Dockerfile 中的 multi-stage(多阶段构建)

发布时间:2020-12-16 03:56:55 所属栏目:安全 来源:网络整理
导读:分别为软件的编译环境和运行环境提供不同的容器镜像 。比如为编译环境提供一个 Dockerfile.build,用它构建的镜像包含了编译软件需要的所有内容,比如代码、SDK、工具等等。同时为软件的运行环境提供另外一个单独的 Dockerfile,它从 Dockerfile.build 中获

分别为软件的编译环境和运行环境提供不同的容器镜像。比如为编译环境提供一个 Dockerfile.build,用它构建的镜像包含了编译软件需要的所有内容,比如代码、SDK、工具等等。同时为软件的运行环境提供另外一个单独的 Dockerfile,它从 Dockerfile.build 中获得编译好的软件,用它构建的镜像只包含运行软件所必须的内容。这种情况被称为构造者模式(builder pattern),本文将介绍如何通过 Dockerfile 中的 multi-stage 来解决构造者模式带来的问题。

golang:1.7.3 CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

["./app"]

#!/bin/ Building sparkdevo/href- docker build --no-cache -t sparkdevo/href-counter:build . - docker create --name extract sparkdevo/href- docker extract:/go/src/github.com/sparkdevo/href-counter/app ./ -<span style="color: #0000ff">echo Building sparkdevo/href-<span style="color: #000000">counter:latest

<span style="font-family: Microsoft YaHei">构建运行应用程序的镜像

docker build --no-cache -t sparkdevo/href-counter:latest .

用于生产环境的容器镜像只有 10.3 M,这样的大小在网络间传输的效率是很高的。

$ docker run -e url=https: $ docker run -e url=http:

采用上面的构建过程,我们需要维护两个 Dockerfile 文件和一个脚本文件 build.sh。能不能简化一些呢? 下面我们看看 docker 针对这种情况提供的解决方案:multi-stage。

golang:1.7.3 CGO_ENABLED=0<span style="color: #008080">FROM<span style="color: #000000"> alpine:latest
<span style="color: #008080">RUN
<span style="color: #000000"> apk --no-cache add ca-certificates
<span style="color: #008080">WORKDIR
<span style="color: #000000"> /root/
<span style="color: #008080">COPY
--from=0<span style="color: #000000"> /go/src/github.com/sparkdevo/href-counter/app .
<span style="color: #008080">CMD ["./app"]

$ docker build --no-cache -t sparkdevo/href-counter:multi . -f Dockerfile.multi

$ docker run -e url=https: $ docker run -e url=http:

golang:1.7.3 as builder CGO_ENABLED=0<span style="color: #008080">FROM<span style="color: #000000"> alpine:latest
<span style="color: #008080">RUN
<span style="color: #000000"> apk --no-cache add ca-certificates
<span style="color: #008080">WORKDIR
<span style="color: #000000"> /root/
<span style="color: #008080">COPY
<span style="color: #000000"><span style="color: #ff0000"> --from=builder
/go/src/github.com/sparkdevo/href-counter/app .
<span style="color: #008080">CMD ["./app"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读