github编辑

7.7 ARG 构建参数

7.7.1 基本语法

ARG <参数名>[=<默认值>]

ARG 指令定义构建时的变量,可以在 docker build 时通过 --build-arg 传入。


7.7.2 ARG vs ENV

特性
ARG
ENV

生效时间

仅构建时

构建时 + 运行时

持久性

构建后消失

写入镜像

覆盖方式

docker build --build-arg

docker run -e

适用场景

构建参数 (版本号等)

应用配置

可见性

docker history 可见

docker inspect 可见

构建时                         运行时
├─ ARG VERSION=1.0             │ (ARG 已消失)
├─ ENV APP_ENV=prod            │ APP_ENV=prod(仍存在)
└─ RUN echo $VERSION           │

⚠️ 安全提示:不要用 ARG 传递密码等敏感信息,docker history 可以查看所有 ARG 值。


7.7.3 基本用法

定义和使用

构建时覆盖


7.7.4 ARG 的作用域

FROM 之前的 ARG

FROM 之后重新声明

多阶段构建中的 ARG


7.7.5 常见使用场景

1. 控制基础镜像版本

2. 设置软件版本

3. 配置构建环境

4. 配置私有仓库


7.7.6 将 ARG 传递给 ENV

如果需要在运行时使用 ARG 的值:


7.7.7 预定义 ARG

Docker 提供了一些预定义的 ARG,无需声明即可使用:

ARG
说明

HTTP_PROXY

HTTP 代理

HTTPS_PROXY

HTTPS 代理

NO_PROXY

不使用代理的地址

FTP_PROXY

FTP 代理


7.7.8 最佳实践

1. 为 ARG 提供合理默认值

2. 不要用 ARG 存储敏感信息

3. 使用 ARG 提高构建灵活性


最后更新于