Docker + node_modules:尝试 运行 Docker 文件时收到本地依赖错误
Docker + node_modules: receiving error for local dependency while trying to run Dockerfile
我正在为 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.
Docker 文件:
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
docker-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 中符号链接的问题,还有一些文章概述了这个问题,但 none 似乎提供了解决这个问题的方法。我正在寻找解决此问题的方法或非常好的解决方法。
A Docker 构建不能引用构建上下文之外的文件,即 docker-compose.yml
文件中定义的 .
。
docker build
在构建上下文中创建一个包含所有文件的 tar 包,并将其发送到 Docker 守护进程以进行构建。构建中不存在上下文目录之外的任何内容。
您可以将带有 context: ../
的构建上下文移动到父目录,并随机排列您在 Dockerfile
中引用的所有路径以匹配。请注意不要使构建上下文变大,因为它会减慢构建过程。
另一种选择是将私有 npm 模块发布到 scope,可能在您和构建服务器可以访问并正常安装依赖项的私有 npm 注册表上。
我正在为 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.
Docker 文件:
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
docker-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 中符号链接的问题,还有一些文章概述了这个问题,但 none 似乎提供了解决这个问题的方法。我正在寻找解决此问题的方法或非常好的解决方法。
A Docker 构建不能引用构建上下文之外的文件,即 docker-compose.yml
文件中定义的 .
。
docker build
在构建上下文中创建一个包含所有文件的 tar 包,并将其发送到 Docker 守护进程以进行构建。构建中不存在上下文目录之外的任何内容。
您可以将带有 context: ../
的构建上下文移动到父目录,并随机排列您在 Dockerfile
中引用的所有路径以匹配。请注意不要使构建上下文变大,因为它会减慢构建过程。
另一种选择是将私有 npm 模块发布到 scope,可能在您和构建服务器可以访问并正常安装依赖项的私有 npm 注册表上。