未定义变量
目录
输出
Usage of undefined variable '$foo'描述
此检查确保环境变量和构建参数在使用前已正确声明。虽然未声明的变量可能不会导致立即构建失败,但它们可能会导致构建过程中的后续阶段出现意外行为或错误。
此检查不会评估您使用 shell 形式 的 RUN、CMD 和 ENTRYPOINT 指令中的未定义变量。
这是因为当您使用 shell 形式时,变量是由命令 shell 解析的。
它还能检测常见的错误,例如变量名中的拼写错误。例如,在以下 Dockerfile 中:
FROM alpine
ENV PATH=$PAHT:/app/bin该检查识别出 $PAHT 是未定义的,很可能是 $PATH 的拼写错误:
Usage of undefined variable '$PAHT' (did you mean $PATH?)示例
❌ 错误: $foo 是一个未定义的构建参数。
FROM alpine AS base
COPY $foo .✅ 推荐:在尝试访问构建参数 foo 之前先声明它。
FROM alpine AS base
ARG foo
COPY $foo .❌ 错误: $foo 未定义。
FROM alpine AS base
ARG VERSION=$foo✅ 好:基础镜像定义了 $PYTHON_VERSION
FROM python AS base
ARG VERSION=$PYTHON_VERSION