UndefinedVar

出力

Usage of undefined variable '$foo'

(訳: 定義されていない変数 '$foo' が使われています)

内容説明

このチェックは、環境変数やビルド引数が利用される前に正しく宣言されていることを確認します。 変数が宣言されていなかったとしても、即座にビルドエラーになることはないかもしれません。 しかしビルド処理のどこかにおいて、予期しない動作を引き起こす可能性があります。

このチェックにおいては、RUNCMDENTRYPOINT といった命令の シェル形式 を使った場合には、変数が未定義であったとしてもその評価はしません。 シェル形式の場合、変数はコマンドシェルが解決するからです。

またこのチェックでは変数名のタイポのような、よく引き起こすミスについてもチェックします。 たとえば Dockerfile 内において以下のように記述したとします。

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

このチェックにおいて $PAHT は未定義であることを検出すると同時に $PATH のタイポであろうと予測します。

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

(訳: 定義されていない変数 '$PAHT' が使われています ($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