最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Docker 镜像构建参数如何传
时间:2026-08-14 20:59:50 编辑:袖梨 来源:一聚教程网
ARG 指令定义构建参数,通过 --build-arg 传值,仅构建时生效且不存入镜像;需在使用前声明,支持默认值;作用域限于当前构建阶段,不可跨阶段继承;敏感信息禁用 ARG,应改用 --secret。
用 ARG 指令定义参数,再通过 docker build --build-arg 传值,是最标准、最安全的方式。参数只在构建时生效,不会留在最终镜像里,适合传版本号、环境名、配置路径等非敏感信息。
在 Dockerfile 中声明 ARG
ARG 必须写在使用它的指令之前,支持设默认值(推荐),避免因漏传导致构建失败:
-
ARG APP_VERSION=1.0.0—— 有默认值,不传参时自动用 1.0.0 -
ARG CONFIG_PATH—— 无默认值,构建时必须用--build-arg CONFIG_PATH=...显式传入,否则该变量为空 - 可在 RUN、COPY、LABEL 等指令中引用,比如:
COPY $CONFIG_PATH /app/config.yaml
构建时用 --build-arg 传参
命令行传参要和 ARG 名称完全一致(区分大小写),可传多个:
docker build --build-arg APP_VERSION=2.3.1 --build-arg ENV=staging -t myapp:2.3.1 .- 如果参数含空格或特殊字符,建议加引号:
--build-arg "BUILD_TIME=$(date)" - 多次传同一个 ARG,后面值会覆盖前面的(按命令顺序)
多阶段构建中注意作用域
ARG 只对当前阶段有效,不能跨阶段自动继承:
- 若想在第二阶段也用 APP_VERSION,需在每个阶段开头重新声明:
ARG APP_VERSION - 可以在 FROM 前声明 ARG,这样它能被后续的 FROM 引用(如
FROM node:$NODE_VERSION) - 不要指望第一阶段 RUN echo $APP_VERSION 的结果能在第二阶段直接读到
别把敏感信息塞进 ARG
ARG 值虽不存入镜像,但在构建日志、CI 系统历史记录里可能明文可见:
- 密码、token、私钥等请改用
docker build --secret(需启用 BuildKit) - 临时调试可用
RUN echo "DEBUG: $APP_VERSION"输出验证,但上线前删掉 - 用
ARG+ENV组合时要小心:ENV 会让变量进入运行时镜像,而 ARG 不会
相关文章
- 华为 WS550 无线路由器无线桥接设置指南 08-14
- 华为 A1 Lite 无线路由器设置MAC地址克隆操作流程 08-14
- 华为 A1 Lite 无线路由器通过WiFi中继连接老路由器操作流程 08-14
- 华为 荣耀路由Pro 开启游戏加速功能使用 08-14
- 华为 WS832 无线路由器手机设置 08-14
- 360路由器插件网速慢怎么办(360路由器插件网速慢如何解决) 08-14