首页/云/Docker 容器速查/ARG 作用域与重新声明
镜像与构建107 条

ARG 作用域与重新声明

FROM 之前声明的 ARG 只对 FROM 行生效;要在阶段内部使用同名值,必须在 FROM 之后重新写一条不带赋值的 ARG。

Docker 容器速查云更新于 2026-10-12
规则ARG 作用域按阶段划分
重声明FROM 后写 ARG NAME(不赋值)继承构建传入值
未声明阶段内直接引用 = 空值

示例

示例
ARG BASE=node:20-alpine
FROM ${BASE}
ARG BASE
ARG APP_VERSION=dev
RUN echo "base=$BASE version=$APP_VERSION"
多阶段分别使用时,每个阶段都要各自重声明;构建日志不会提示这个空值问题。

易错点

  • 忘记重声明时变量为空,构建脚本里的路径或版本号会静默变成空串
  • 传了未声明的 --build-arg 会被忽略(部分版本给 warning),参数不生效先查声明位置

数据来源与参考

  • Docker 官方文档:Understand how ARG and FROM interact(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌