未定义变量
目录
输出
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