首页/云/云与容器速查/多阶段构建(Multi-stage build)
容器与 Docker106 条

多阶段构建(Multi-stage build)

一个 Dockerfile 多个 FROM 阶段:编译工具链留在中间阶段,最终镜像只 COPY 运行产物。Go/Rust/前端项目常用,体积可从 GB 级降到几十 MB。

云与容器速查云更新于 2026-10-12
原理每个 FROM 独立阶段;中间阶段默认丢弃,产物按需 COPY --from
引用--from=阶段名 或 --from=0(序号从 0 起)
调试docker build --target build 只构建到指定阶段
收益编译依赖不进产物镜像:更小、攻击面更小、推送更快

前端场景

前端场景
FROM node:20-bookworm-slim AS build
WORKDIR /src
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:1.27-alpine
COPY --from=build /src/dist /usr/share/nginx/html
未使用的中间阶段层不会进入最终镜像,但构建缓存仍会占用宿主磁盘:日常配合 docker system prune 清理。

易错点

  • COPY --from 路径写宿主路径:它取的是阶段文件系统,不是构建机目录
  • 在最终阶段又装了一遍构建依赖:多阶段的意义全丢,体积白省

数据来源与参考

  • Docker Docs:Multi-stage builds

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌