gpt4 book ai didi

docker + 节点模块 : receiving error for local dependency while trying to run Dockerfile

转载 作者:行者123 更新时间:2023-12-02 19:34:34 24 4
gpt4 key购买 nike

我正在为 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

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 中的符号链接(symbolic link)问题,还有一些文章概述了这个问题,但似乎没有一个能解决这个问题。我正在寻找解决此问题的方法或非常好的解决方法。

最佳答案

Docker 构建不能引用构建上下文之外的文件,即 .docker-compose.yml 中定义文件。
docker build在构建上下文中创建所有文件的 tar 包,并将其发送到 Docker 守护程序以进行构建。上下文目录之外的任何内容都不存在于构建中。

您可以使用 context: ../ 移动构建上下文到父目录并随机播放您在 Dockerfile 中引用的所有路径匹配。请注意不要使构建上下文变大,因为它会减慢构建过程。

另一种选择是将私有(private) npm 模块发布到 scope ,可能在您和构建服务器有权访问并正常安装依赖项的私有(private) npm 注册表上。

关于 docker + 节点模块 : receiving error for local dependency while trying to run Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47253610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com