首页/云/Docker 容器速查/docker build --target 只建到指定阶段
镜像与构建107 条

docker build --target 只建到指定阶段

多阶段构建里用 --target 停在某个阶段:适合调试中间产物、为 CI 单独构建测试阶段,或产出台账类中间镜像。

Docker 容器速查云更新于 2026-10-13

--target 是什么

多阶段构建里用 --target 指定只构建到某个阶段为止:适合调试中间产物、在 CI 里单独构建依赖阶段,或产出只含编译结果的中间镜像。被选阶段之后的所有阶段都不会执行,构建更快。

基本信息

用途选择构建到哪个阶段为止
语法docker build --target 阶段名 -t 名称 .
默认行为构建全部阶段,结果取最后一个阶段
定位方式阶段名(AS 声明)或阶段序号
注意事项中间阶段的产物通常不是可直接发布的镜像

典型使用场景

  • 调试构建环境:只构建到 build 阶段,进容器看依赖是否齐全
  • CI 分层构建:依赖阶段单独构建并复用,缩短后续构建时间
  • 排查运行阶段缺文件:先构建到中间阶段,确认产物确实生成
  • 产出测试阶段镜像,跑完接口测试再继续后续发布流程
  • 为不同角色复用同一份文件:停在某个阶段得到不同的产物
  • 加快日常构建:开发时只构建到当前需要的阶段

示例

示例
docker build --target build -t app/web:build .       # 只构建到构建阶段
docker build --target runtime -t app/web:runtime .     # 构建到运行阶段
docker run --rm -it app/web:build sh                    # 进中间镜像排查依赖
docker build --target 0 -t app/web:first .               # 也可以用阶段序号

几种目标选择

写法含义适用情况
不指定 target构建全部阶段正常发布流程
--target build只构建到 build 阶段调试依赖与编译环境
--target runtime只构建到运行阶段跳过后续可选阶段
--target 序号按阶段序号定位阶段没有命名时使用
停在中间阶段得到的是未完成镜像,直接运行可能缺少运行环境,不要把它当作发布镜像使用。
阶段名拼写错误时的报错可能指向依赖关系而不是名字本身,先核对 AS 声明里的写法与大小写。
用 --target 做 CI 分层能明显缩短构建时间,前提是各阶段依赖关系清晰、缓存配置到位。

易错点

  • 把 --target 的产物当发布镜像:中间阶段通常只装了构建工具,运行时缺依赖直接失败
  • 阶段名写错或大小写不一致,报错信息不直观,先核对 AS 声明
  • 以为 --target 会跳过前置阶段:目标阶段依赖的阶段仍会被构建,耗时不会凭空减少
  • CI 里给中间阶段产物打了正式版本标签,后续容易被误当成可发布的镜像

数据来源与参考

  • Docker 官方 CLI 参考:docker build --target(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌