大佬教程收集整理的这篇文章主要介绍了node.js – npm install成功后,卷中不存在node_modules:node_modules,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
> web / – 持有并在端口5000上运行python 3 flask web服务器。使用sqlite3。
> worker / – 有一个index.js文件,它是队列的工作者。 Web服务器通过端口9730使用json API与此队列交互。worker使用redis进行存储。 worker还将数据本地存储在文件夹worker / images /
现在这个问题只关心工人。
worker / Dockerfile
FROM node:0.12 WORKDIR /worker COPY package.json /worker/ RUN npm install COPY . /worker/
docker-compose.yml
redis: image: redis worker: build: ./worker command: npm start ports: - "9730:9730" volumes: - worker/:/worker/ links: - redis
当我运行docker-compose构建,一切正常工作,所有的npm模块安装在/ worker / node_modules,正如我所料。
npm WARN package.json unfold@1.0.0 No README data > phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs > node install.js <snip>
但是当我做docker-compose了,我看到这个错误:
worker_1 | Error: CAnnot find module 'async' worker_1 | at Function.Module._resolveFilename (module.js:336:15) worker_1 | at Function.Module._load (module.js:278:25) worker_1 | at Module.require (module.js:365:17) worker_1 | at require (module.js:384:17) worker_1 | at Object.<anonymous> (/worker/index.js:1:75) worker_1 | at Module._compile (module.js:460:26) worker_1 | at Object.Module._extensions..js (module.js:478:10) worker_1 | at Module.load (module.js:355:32) worker_1 | at Function.Module._load (module.js:310:12) worker_1 | at Function.Module.runMain (module.js:501:10)
结果没有一个模块存在于/ worker / node_modules(在主机或容器中)。
如果在主机上,我npm安装,那么一切工作就好了。但我不想这样做。我想让容器处理依赖。
这里有什么问题?
(不用说,所有包都在package.json中。)
当Docker构建映像时,将在工作程序目录中创建node_modules目录,并在那里安装所有依赖项。然后在运行时,来自docker外部的工作目录被装载到docker实例(它没有安装的node_modules),隐藏刚刚安装的node_modules。您可以通过从docker-compose.yml中删除已安装的卷来验证这一点。
解决方法是使用数据卷来存储所有node_modules,因为在挂载工作程序目录之前,从已构建的docker镜像的数据中复制数据卷。这可以在docker-compose.yml中这样做:
redis: image: redis worker: build: ./worker command: npm start ports: - "9730:9730" volumes: - worker/:/worker/ - /worker/node_modules links: - redis
我不完全确定这是否对图像的可移植性施加任何问题,但因为它似乎你主要使用docker提供一个运行时环境,这不应该是一个问题。
如果你想阅读更多关于卷,有一个很好的用户指南在这里:https://docs.docker.com/userguide/dockervolumes/
以上是大佬教程为你收集整理的node.js – npm install成功后,卷中不存在node_modules:node_modules全部内容,希望文章能够帮你解决node.js – npm install成功后,卷中不存在node_modules:node_modules所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。