首页/云/云与容器速查/docker build 参数组合(--build-arg/--target/--no-cache)
容器与 Docker106 条

docker build 参数组合(--build-arg/--target/--no-cache)

构建命令的常用参数组合:改构建参数、只构建中间阶段、强制重建、多 Dockerfile 场景与目标平台,配合 buildx 还能出多架构镜像。

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

docker build 参数组合是什么

docker build 的常用参数组合解决四类问题:用 --build-arg 改构建期参数(镜像源、版本号);用 --target 只构建到某个中间阶段,便于调试多阶段构建中出问题的环节;用 --no-cache 强制全量重建,排除缓存污染;用 -f 指定非默认位置的 Dockerfile。加上 --platform 与 buildx,还能构建与推送多架构镜像。

基本信息

--build-arg向 Dockerfile 中的 ARG 传值,可重复出现
--target只构建到指定阶段,用于定位中间层问题
--no-cache忽略构建缓存全量重建,怀疑缓存污染时使用
-f指定 Dockerfile 路径,默认取上下文根目录下的 Dockerfile
--platform指定目标平台;多架构镜像需要 buildx

典型使用场景

  • 内网构建时指定私有镜像源与代理参数,避免依赖公网
  • 多阶段构建调试:只构建到 build 阶段,验证依赖安装是否成功
  • 依赖版本更新后强制重建,排除缓存导致的『改了没生效』
  • 多 Dockerfile 仓库(开发与生产各一份)用 -f 显式指定
  • 跨平台交付:在 x86 构建机上产出 arm64 镜像供边缘设备使用

典型组合

典型组合
docker build \
  --build-arg NPM_REGISTRY=https://registry.npmmirror.com \
  --target build \
  --no-cache \
  -t app:dev \
  -f docker/Dockerfile .
# 多架构构建(需要 buildx 与对应 builder)
docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 --push .

参数与适用时机

参数解决什么问题注意
--build-arg构建期变量取值不同值会出现在构建历史中,不放密钥
--target只想构建到中间阶段阶段名必须与 Dockerfile 一致
--no-cache怀疑缓存污染或依赖更新重建耗时更长,CI 中按需使用
-fDockerfile 不在上下文根目录Dockerfile 只能引用上下文内的文件
--platform构建非本机架构镜像需要 buildx,跨架构构建更慢
上下文是命令最后那个参数(通常是 .):上下文会被打包发送给构建引擎,过大或包含 .git、node_modules 会让构建明显变慢,用 .dockerignore 收敛。
--build-arg 传入的敏感值会留存在构建历史中,CI 日志与镜像元数据都可能暴露;密码与令牌应改用 BuildKit 的 --secret 挂载,不要走构建参数。
构建缓存是按指令文本与上下文内容计算的:命令行参数或文件内容发生变化,相关层就会重建。排查『改了却没生效』时先确认缓存是否命中,再怀疑代码本身。

易错点

  • 改了构建参数却看到旧结果:缓存命中导致参数未参与重建,需要 --no-cache 或改变命令行内容
  • -f 指向上下文之外的 Dockerfile,COPY 立即失败,因为上下文不包含该文件
  • 把带令牌的构建参数打进 CI 日志,密钥随日志外泄
  • 多架构构建时未使用 buildx 就指定 --platform,只得到本机架构镜像或直接报错

数据来源与参考

  • Docker Docs:docker build
  • Docker Docs:docker buildx build

相关工具

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