未定义变量

输出

Usage of undefined variable '$foo'

描述

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

此检查不会评估 、 和 使用 shell 形式的说明的未定义变量。 这是因为当你使用 shell 表单时,变量由命令 壳。RUNCMDENTRYPOINT

它还可以检测常见错误,例如变量名称中的拼写错误。例如,在 以下 Dockerfile:

FROM alpine
ENV PATH=$PAHT:/app/bin

检查会识别出 未定义,并且可能是 :$PAHT$PATH

Usage of undefined variable '$PAHT' (did you mean $PATH?)

例子

❌ Bad:是未定义的构建参数。$foo

FROM alpine AS base
COPY $foo .

✅ Good:在尝试访问之前声明为 build 参数。foo

FROM alpine AS base
ARG foo
COPY $foo .

❌ Bad:未定义。$foo

FROM alpine AS base
ARG VERSION=$foo

✅ Good:基础镜像定义$PYTHON_VERSION

FROM python AS base
ARG VERSION=$PYTHON_VERSION