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
になります。
ビルドルール WorkdirRelativePath
は WORKDIR
に相対パスを指定していながら、同じ 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 .