Docker + node_modules:尝试运行Dockerfile时接收本地依赖的错误
我正在创build一个node.js微服务的docker容器,并遇到来自另一个文件夹的本地依赖项的问题。
我使用以下方法将依赖项添加到node_modules
文件夹:
npm install -S ../dependency1(module name).
这还在package.json中添加了一个条目,如下所示:
"dependency1": "file:../dependency1".
当我运行docker-compose up -d
命令时,我收到一个错误,指出下面的内容:
npm ERR! Could not install from "../dependency1" as it does not contain a package.json file.
Dockerfile:
FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install CMD [ "npm", "start" ] EXPOSE 3000
泊坞窗,compose.yml:
customer: container_name: "app_customer" build: context: . dockerfile: Dockerfile volumes: - .:/usr/src/app/ - /usr/src/app/node_modules ports: - "3000:3000" depends_on: - mongo - rabbitmq
我发现文章概述了node_modules文件夹和docker中的符号链接的问题,以及几个概述了这个问题,但似乎没有提供解决这个问题的方法。 我正在寻找解决这个问题或一个非常好的解决方法。
Docker构build不能在构build上下文之外引用文件,这是.
在docker-compose.yml
文件中定义。
docker build
在构build上下文中创build一个包含所有文件的tar包,并将其发送到构build的Docker守护进程。 构build中不存在上下文目录之外的任何内容。
你可以将你的构build上下文移动到context: ../
到父目录,然后将Dockerfile
引用的所有path进行混洗以匹配。 只要小心不要让构build上下文变大,因为它会减慢构build过程。
另一个select是将私有的npm模块发布到一个范围 ,可以在你和构build服务器可以访问并正常安装依赖关系的私有npmregistry中实现。