RUN cdによる作業ディレクトリの設定

後続の命令にも適用する作業ディレクトリはWORKDIRで指定してください。

説明

RUN cd ...によるディレクトリの変更は、そのRUN内でのみ有効です。後続の命令でも同じ場所を使う場合は、WORKDIRで指定してください。1つの命令内で一時的に移動するためのcdは使用できます。

想定される影響

ディレクトリの変更が後続の命令にも引き継がれると考えると、別の場所でファイルを処理したり、ビルドに失敗したりするおそれがあります。

対処方法

継続して使う作業ディレクトリをWORKDIRの絶対パスで指定し、後続の命令の相対パスを確認してください。

例

作業ディレクトリの宣言を比較する例です。どちらのCOPYもコピー先が絶対パスなので、コピー先は変わりません。NGINX_IMAGEにはサポート対象のNGINXイメージ参照を指定してください。

変更前

dockerfile
ARG NGINX_IMAGE
FROM ${NGINX_IMAGE}

RUN cd /usr/share/nginx/html
COPY index.html /usr/share/nginx/html

変更後

dockerfile
ARG NGINX_IMAGE
FROM ${NGINX_IMAGE}

WORKDIR /usr/share/nginx/html
COPY index.html /usr/share/nginx/html

参考資料