UndefinedVar
もくじ
出力
Usage of undefined variable '$foo'
(訳: 定義されていない変数 '$foo' が使われています)
内容説明
このチェックは、環境変数やビルド引数が利用される前に正しく宣言されていることを確認します。 変数が宣言されていなかったとしても、即座にビルドエラーになることはないかもしれません。 しかしビルド処理のどこかにおいて、予期しない動作を引き起こす可能性があります。
このチェックにおいては、RUN
、CMD
、ENTRYPOINT
といった命令の シェル形式 を使った場合には、変数が未定義であったとしてもその評価はしません。
シェル形式の場合、変数はコマンドシェルが解決するからです。
またこのチェックでは変数名のタイポのような、よく引き起こすミスについてもチェックします。 たとえば 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