未定义变量

输出

Usage of undefined variable '$foo'

描述

此检查确保环境变量和构建参数在使用前已正确声明。虽然未声明的变量可能不会导致立即构建失败,但它们可能会导致构建过程中的后续阶段出现意外行为或错误。

此检查不会评估您使用 shell 形式RUNCMDENTRYPOINT 指令中的未定义变量。 这是因为当您使用 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