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中实现。