docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker 多阶段构建与单阶段构建

docker中多阶段构建与单阶段构建的具体使用

作者:{⌐■_■}

本文主要介绍了docker中多阶段构建与单阶段构建的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

单阶段构建(Single-Stage Build)

在单阶段构建中,所有构建过程都在一个镜像中完成。构建工具和最终的运行时环境都包含在同一个镜像中,导致最终镜像的体积较大。

单阶段构建 Dockerfile 示例:

FROM golang:1.18
WORKDIR /app
COPY ./helloworld /app/
// 设置 Go 代理环境变量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct  // 使用中国的 Go 代理,确保更快速的包下载
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .
EXPOSE 80
CMD ["./app", "--param1=p1", "--param2=p2"]

优缺点:

多阶段构建(Multi-Stage Build)

在多阶段构建中,构建过程被分成多个阶段。每个阶段可以使用不同的基础镜像,最终镜像只包含必要的运行时环境和构建完成的二进制文件。
这种方法的好处是可以显著减小最终镜像的体积,同时避免将不必要的构建工具和依赖包含在生产环境的镜像中。

多阶段构建 Dockerfile 示例:

# 第一阶段:构建 Go 应用
FROM golang:1.18 AS builder
WORKDIR /go/src/helloworld
COPY ./helloworld /go/src/helloworld
// 设置 Go 代理环境变量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct  // 使用中国的 Go 代理,确保更快速的包下载
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .

# 第二阶段:运行 Go 应用
FROM alpine:latest
WORKDIR /app
COPY --from=builder /go/src/helloworld/app /app/
EXPOSE 80
CMD ["./app", "--param1=p1", "--param2=p2"]

优缺点:

对比总结

到此这篇关于docker中多阶段构建与单阶段构建的具体使用的文章就介绍到这了,更多相关docker 多阶段构建与单阶段构建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文