Dockerfile
1:
FROM node:latest
WORKDIR /app
COPY ..
RUN npm install
EXPOSE 3000
CMD ["node", "index.js"]
Dockerfile
2:
FROM node:latest
WORKDIR /app
RUN npm install
COPY ..
EXPOSE 3000
CMD ["node", "index.js"]
这两个 Dockerfile 有什么不同?当我构建 docker 文件时,除了
CMD
步骤之外的所有内容都会被执行,但是它们有什么不同?
在
Dockerfile 2
上,您设置了 WORKDIR
,并且没有任何内容,下一步是 RUN npm install
,它将在这个空目录中执行。
在这里进行猜测,但我相信您会感到困惑,因为您的项目本身位于
/app
文件夹内。但请记住容器的核心思想是隔离。容器有自己的文件系统,无论您选择哪个名称 WORKDIR
都不必匹配任何内容。