1. ホーム

[解決済み】DockerfileのWORKDIRは何のためにあるのか?

2022-04-22 08:24:42

質問

Dockerを勉強しています。何度も Dockerfile があります。 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” ] 

を省略することはできないのでしょうか? WORKDIRCopy を持ち、ただ私の Dockerfile をプロジェクトのルートで使用することはできますか?この方法の欠点は何ですか?

どのように解決するのですか?

によると ドキュメント :

WORKDIR命令は、すべてのRUN、CMD, ENTRYPOINT、COPY、ADDの各命令に続く Dockerfileを使用します。もしWORKDIRが存在しなければ、たとえそれ以降のDockerfile命令で使用されていなくても作成されます。

また Dockerのベストプラクティス を使用することを推奨しています。

<ブロッククオート

...あなたは、次のような指示を増殖させる代わりに、WORKDIRを使用する必要があります。 RUN cd ... && do-something, which are hard to read, troubleshoot, and which are hard to do-something. メンテナンス

残しておくことをお勧めします。

Dockerfileをリファクタリングして、こんな感じにすればいいと思います。

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