多_MODULE
软件开发 - 构建与持续集成/持续交付 (CI/CD)

多阶段构建

通过将构建依赖项与运行时环境分离,优化容器镜像大小,从而减少最终镜像体积,提高部署效率。

Medium
DevOps 工程师
Technicians examine a large holographic display showing complex data visualizations in a server room.

Priority

Medium

Execution Context

多阶段构建 (Multi-Stage Builds) 允许通过在单个文件中使用多个阶段来创建更精简的 Docker 镜像。第一个阶段用于编译依赖项和源代码,而后续阶段仅复制必要的构建产物。这种技术可以消除最终镜像中不必要的库和二进制文件,从而显著降低存储成本,并加快生产环境中的容器启动速度。

在 Dockerfile 中定义多个构建阶段,以将编译逻辑与运行时需求隔离开。

按照顺序执行每个阶段,确保仅将必要的文档传递到下一个阶段。

将图像优化完成,通过将尽可能少的附加信息复制到基础镜像中,确保其不依赖任何外部环境。

Operating Checklist

使用官方基础镜像,创建 `FROM` 指令,用于初始编译阶段。

在此隔离环境中,安装构建工具并编译应用程序代码。

启动第二个 `FROM` 指令,使用最小化的运行时镜像,用于后续的构建阶段。

仅将编译好的二进制文件或静态资源复制到最终阶段,无需包含源代码文件。

Integration Surfaces

Dockerfile 配置

请将构建文件结构化,使用 `FROM` 指令明确定义不同的构建阶段,并使用清晰的 `COPY` 命令。

构建流水线执行

监控 CI/CD 流程中的各个环节,确保其成功完成,同时避免传递临时文件。

图像尺寸验证

使用 Docker inspect 命令或第三方工具,以衡量与单阶段构建相比,镜像体积的减少程度。

FAQ

Bring 多阶段构建 Into Your Operating Model

Connect this capability to the rest of your workflow and design the right implementation path with the team.