UndefinedVar
目录
输出
Usage of undefined variable '$foo'
描述
此检查确保在使用环境变量和构建参数之前已正确声明它们。虽然未声明的变量可能不会立即导致构建失败,但它们可能在构建过程的后期导致意外行为或错误。
此检查不评估在 RUN
、CMD
和 ENTRYPOINT
指令中使用 shell 格式 时未定义的变量。这是因为当您使用 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