首页/云/云与容器速查/Dockerfile ARG 构建期变量
本包目录(340 条)
云基础概念44 条计算与存储56 条网络与安全组33 条
容器与 Docker106 条
Kubernetes68 条容器排障33 条

Dockerfile ARG 构建期变量

只在构建期存在的参数:用 docker build --build-arg 传入,可给默认值。多阶段构建中每个阶段需重新声明;值会留在构建历史里,不能放密钥。

云与容器速查云更新于 2026-10-12
语法ARG NAME[=默认值];配合 docker build --build-arg NAME=值
作用域从声明处到该构建阶段结束;每阶段重新声明
与 ENVARG 仅构建期;ENV 持久进入镜像,可被 ARG 赋值
安全值可从 docker history 读出:敏感数据用 BuildKit --secret

镜像源参数示例

镜像源参数示例
# Dockerfile
ARG NPM_REGISTRY=https://registry.npmmirror.com
RUN npm config set registry "$NPM_REGISTRY"

# 构建时覆盖
docker build --build-arg NPM_REGISTRY=https://registry.npmjs.org -t app:dev .
构建失败信息里回显 ARG 值:CI 日志中带 token 的 ARG 会一并泄露,改用 --secret 挂载。

易错点

  • 在第二阶段直接用第一阶段 ARG:报变量未定义,需重复声明
  • ARG 与 ENV 同名:ENV 会遮蔽 ARG,后续指令读到的是 ENV 值

数据来源与参考

  • Docker Docs:Dockerfile reference(ARG)
  • Docker Docs:Build secrets

相关工具

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