You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker:多阶段构建完成后如何使用对应镜像?

多阶段构建优化Docker镜像实现方案

完全懂你的需求——多阶段构建就是专门用来解决「构建环境臃肿但最终镜像要极致精简」这类场景的!下面是符合你要求的完整Dockerfile,我会顺便拆解每个部分的设计思路:

# 第一阶段:构建&测试环境(仅用于生成二进制文件,不会作为最终镜像)
FROM fat-base as build
# 安装各类测试框架
RUN setup unit test frameworks
RUN setup integration test frameworks
RUN setup functional test frameworks
# 完成所有构建相关的重型操作(比如编译、打包等)
RUN setup all heavy lifting stuff
# 可选:在这里执行测试(确保二进制文件符合预期)
CMD ["test"]

# 第二阶段:最终运行镜像(仅保留必要的运行时文件)
FROM slim-base
# 从构建阶段复制编译好的二进制文件到最终镜像的指定目录
COPY --from=build /runtime/binary /bin/binary
# 设置容器启动时的入口命令(根据你的二进制文件需求调整)
ENTRYPOINT ["/bin/binary"]

关键设计要点说明:

  • 分离构建与运行环境build阶段用fat-base这类包含完整构建工具链的镜像,负责处理测试框架安装、编译等重型工作;最终阶段用slim-base(比如alpine、distroless这类轻量镜像),只保留运行所需的最小依赖。
  • 只复制必要产物:通过COPY --from=build精准复制编译好的二进制文件,避免把构建环境里的冗余工具、测试框架带入最终镜像。
  • 镜像体积极致精简:最终镜像仅包含运行二进制文件所需的基础环境,不仅体积更小,还能减少攻击面,提升安全性。

内容的提问来源于stack exchange,提问作者Marcello DeSales

火山引擎 最新活动