WorkdirRelativePath

出力

Relative workdir 'app/src' can have unexpected results if the base image changes

(訳: WORKDIR の相対パス指定 'app/src' は、ベースイメージの変更により予期しないことが発生する可能性があります)

内容説明

ビルドステージにおいて WORKDIR の指定を行う際には、/build のように絶対パスを指定するか、./build のように相対パスを指定することができます。 相対パスを用いるということは、その直前までのワーキングディレクトリからの相対位置としてディレクトリが定まるということです。 たとえばベースイメージがワーキングディレクトリとして /usr/local/foo を指定しているとして、相対パスに WORKDIR build といった指定を行ったとしたら、ワーキングディレクトリは /usr/local/foo/build になります。

ビルドルール WorkdirRelativePathWORKDIR に相対パスを指定していながら、同じ Dockerfile 内において初めに絶対パスによる指定を行っていない場合に警告を出します。 このルールの考え方は以下のとおりです。 ベースイメージに対して相対パスによるワーキングディレクトリを指定した際に、そのベースイメージが外部でビルドされたものであるとすると、うまく動作しない場合があります。 というのもワーキングディレクトリは上流の開発者により通知なく変更されるかもしれません。 もしそうなったら、ビルド時におけるディレクトリ構造は完全に間違ったものになってしまいます。

❌ 不可: これはベースイメージ内の WORKDIR/ であることを前提にしています (上流の開発者がこれを変更したら、web ステージは意図しないものになります)。

FROM nginx AS web
WORKDIR usr/share/nginx/html
COPY public .

✅ 可: 先頭にスラッシュがあることから、WORKDIR は常に意図したパスとなります。

FROM nginx AS web
WORKDIR /usr/share/nginx/html
COPY public .