我想分享一下。我正在使用Dockerfile测试创建一个nodejs应用程序的Docker镜像/容器。一切顺利,直到我尝试添加.dockerignore文件时,我在其中列出了以下文件,并期望它们不会被复制到Docker镜像中:
node_modules
dockerignore
Dockerfile
以下是我的Dockerfile:
FROM node:latest
WORKDIR /app
ADD . .
RUN npm install
CMD node index.js
我使用现有的Dockerfile和新的.dockerignore文件重新构建了我的镜像。创建完成后,我运行了
docker run -it --entrypoint sh <image name>
命令来检查这些文件/文件夹是否不再出现。Dockerfile和.dockerignore文件已经不存在了,但是node_modules文件夹仍然存在。
花了一段时间才意识到,也许镜像中的node_modules文件夹是由Dockerfile中的npm install步骤创建的,而不是从主机复制的文件夹。
我是正确的吗?
.dockerignore
文件中包含node_modules
,会发生什么?当执行npm install
时,node_modules
文件夹是否会被覆盖?因此,毕竟不需要在.dockerignore
中包含node_modules
吗? - punsocaADD . .
步骤将其复制进去,因此您将获得一个更大的镜像;如果主机和容器不是相同的操作系统,则有可能安装错误架构的模块。 - David Maze