Dockerfile の WORKDIR の目的は何ですか? 質問する

Dockerfile の WORKDIR の目的は何ですか? 質問する

Dockerfile私は Docker を学習中です。これまでに何度も、次のようなコマンドを見てきましたWORKDIR

FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD [ “npm”, “start” ] 

WORKDIRと を省略して、プロジェクトのルートにCopymy を置くだけではだめでしょうか? この方法を使用することの欠点は何ですか?Dockerfile

ベストアンサー1

によるドキュメンテーション:

WORKDIR 命令は、Dockerfile 内でそれに続く RUN、CMD、ENTRYPOINT、COPY、ADD 命令の作業ディレクトリを設定します。WORKDIR が存在しない場合は、後続の Dockerfile 命令で使用されなくても作成されます。

また、Dockerのベストプラクティス使用することをお勧めします:

... RUN cd … && do-something のような、読みにくく、トラブルシューティングや保守も難しい命令を大量に使用する代わりに、WORKDIR を使用する必要があります。

そのままにしておくことをお勧めします。

Dockerfile を次のようにリファクタリングできると思います:

FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . ./
EXPOSE 3000
CMD [ "npm", "start" ] 

おすすめ記事