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

前端之家收集整理的这篇文章主要介绍了Dockerfile 中的 multi-stage(多阶段构建)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

页面中超级链接的程序 app.go(请从 获取本文相关的代码):

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"]

猜你在找的Docker相关文章