【发布时间】:2018-04-24 02:33:14
【问题描述】:
作为无法通过 npm 链接正确处理本地依赖项的一种解决方法,我试图让 Dockerfile 在我运行 npm install 后将符号链接文件夹复制到 node_modules 文件夹,如下所示:
FROM node:latest
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app && cp -a /tmp/package-lock.json /usr/src/app && cp -a /tmp/package.json /usr/src/app
COPY node_modules/modlib1 /usr/src/app/node_modules/mongodb-repository
COPY node_modules/modlib2 /usr/src/app/node_modules/redis-repository
每次Dockerfile 执行到复制行时,我都会收到以下错误:
错误:服务“container1”构建失败:复制失败:stat /var/lib/docker/tmp/docker-builder831774561/.npm-global/lib/node_modules/modlib1:没有这样的文件或目录
这是我的 docker-compose.yml 部分的示例:
container_name: "modlib"
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/usr/src/app/
- /usr/src/app/node_modules
ports:
- "3000:3000"
depends_on:
- mongo
- rabbitmq
我尝试过 COPY、ADD 等。我什至在我的 .dockerignore 文件中注释掉了与 node_modules 相关的部分。
什么可能会阻止这些复制操作?我只想将本地依赖项复制到 node_modules 文件夹。
【问题讨论】:
-
node_modules 文件夹在哪里?它是否包含在
docker build命令末尾的构建上下文中? -
是的。它与项目、Dockerfile 和 node_modules 位于同一文件夹中。
-
您好 user1790300。一个小问题:我已经编辑了您的一些问题以删除闲聊材料,包括您是否感谢帮助(假设)以及您被困多长时间(无关紧要)。请您在以后的帖子中避免使用此类材料吗?
-
“没有这样的文件或目录”非常明确!你说它在同一个文件夹中——它可能是一个软链接吗?
-
@SiKing 我使用 npm link 命令创建它。
标签: node.js docker docker-compose dockerfile