ARG 构建参数
核心概念
# 定义构建参数
ARG VERSION=latest
ARG NODE_ENV=production
FROM node:${VERSION}
ARG NODE_ENV
ENV NODE_ENV=${NODE_ENV}
RUN npm install
# 传递参数
docker build --build-arg VERSION=18 --build-arg NODE_ENV=development .
ARG vs ENV
| 方面 | ARG | ENV |
|---|---|---|
| 作用时机 | 仅构建时 | 构建时 + 运行时 |
| 可覆盖 | --build-arg | -e |
| 持久化 | 不进入镜像 | 进入镜像 |
安全警告
# ❌ 不要用 ARG 传递密钥(会留在镜像层中)
ARG SECRET_KEY
RUN echo $SECRET_KEY > /app/config
# ✅ 用 BuildKit secrets
# --mount=type=secret,id=key
小结
| 语法 | 说明 |
|---|---|
ARG | 构建参数 |
--build-arg | 传递参数 |
ENV | 运行时也可见 |