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
と を省略して、プロジェクトのルートにCopy
my を置くだけではだめでしょうか? この方法を使用することの欠点は何ですか?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" ]