本文介绍了Dockerfile 上的 WORKDIR 有什么意义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在学习 Docker.很多次我看到 Dockerfile
有 WORKDIR
命令:
I'm learning Docker. For many times I've seen that Dockerfile
has WORKDIR
command:
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
并且只将我的 Dockerfile
放在项目的根目录中吗?使用这种方法有什么缺点?
Can't I just omit WORKDIR
and Copy
and just have my Dockerfile
at the root of my project? What are the downsides of using this approach?
推荐答案
根据文档:
WORKDIR 指令为任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令在Docker 文件.如果 WORKDIR 不存在,即使在任何后续 Dockerfile 指令中都没有使用,也会创建它.
另外,在 Docker 最佳实践中 推荐你使用它:
Also, in the Docker best practices it recommends you to use it:
...您应该使用 WORKDIR 而不是像这样的增殖指令运行 cd ... &&做某事,难以阅读、排除故障和维护.
我建议保留它.
我认为您可以将 Dockerfile 重构为:
I think you can refactor your Dockerfile to something like:
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . ./
EXPOSE 3000
CMD [ "npm", "start" ]
这篇关于Dockerfile 上的 WORKDIR 有什么意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!