UndefinedVar

輸出

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