草庐IT

node.js - 学习 NodeJS 和 MongoDB Docker 组合

coder 2023-05-05 原文

我有一个使用 MongoDB 的 NodeJS 项目。我想在 Docker 容器中运行此服务,但是尽管我学习了许多示例,但这行不通。

这是我的 /heimdall_jwt/Dockerfile:

FROM node:9-alpine
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
RUN npm install pm2 -g
COPY . /usr/src/app
EXPOSE 3000
CMD ["pm2-docker", "start", "process.json"]

这是我的 /heimdall_jwt/docker-compose.yml

version: '2'
    # Define the services/containers to be run
services:
    myapp: #name of your service
        build: ./ # specify the directory of the Dockerfile
        ports:
          - "3000:3000" #specify ports forwarding
        links:
          - database # link this service to the database service
        volumes:
          - .:/usr/src/app
        depends_on:
          - database    
    database: # name of the service
       image: mongo # specify image to build container from

我尝试通过以下方式运行:$docker-compose up --build 这导致 mongo 正在构建和启动。这是压缩输出:

Building myapp
Step 1/8 : FROM node:9-alpine
...
Step 4/8 : RUN npm install
 ---> Using cache
 ---> befb91b1324c
...
Removing intermediate container 945eb0ad40d5
Successfully built b500f7ec9b89
Successfully tagged heimdalljwt_myapp:latest
Creating heimdalljwt_database_1 ...
Creating heimdalljwt_database_1 ... done
Creating heimdalljwt_myapp_1 ...
Creating heimdalljwt_myapp_1 ... done
Attaching to heimdalljwt_database_1, heimdalljwt_myapp_1
database_1  | 2017-11-25T21:15:39.001+0000 I INDEX    [initandlisten]    building index using bulk method; build may temporarily use up to 500 megabytes of RAM
database_1  | 2017-11-25T21:15:39.002+0000 I INDEX    [initandlisten] build index done.  scanned 0 total records. 0 secs
database_1  | 2017-11-25T21:15:39.003+0000 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.4
database_1  | 2017-11-25T21:15:39.005+0000 I NETWORK  [thread1] waiting for connections on port 27017
myapp_1     | 0|heimdall | Error: Cannot find module 'bcryptjs'
myapp_1     | 0|heimdall |     at Function.Module._resolveFilename (module.js:542:15)
myapp_1     | 0|heimdall |     at Function.Module._load (module.js:472:25)
myapp_1     | 0|heimdall |     at Module.require (module.js:585:17)
myapp_1     | 0|heimdall |     at require (internal/module.js:11:18)
myapp_1     | 0|heimdall |     at Object.<anonymous> (/usr/src/app/user/User.js:2:14)
myapp_1     | 0|heimdall |     at Module._compile (module.js:641:30)
myapp_1     | 0|heimdall |     at Object.Module._extensions..js (module.js:652:10)
myapp_1     | 0|heimdall |     at Module.load (module.js:560:32)
myapp_1     | 0|heimdall |     at tryModuleLoad (module.js:503:12)
myapp_1     | 0|heimdall |     at Function.Module._load (module.js:495:3)
myapp_1     | 0|heimdall |     at Module.require (module.js:585:17)
myapp_1     | 0|heimdall |     at require (internal/module.js:11:18)
myapp_1     | 0|heimdall |     at Object.<anonymous> (/usr/src/app/user/UserController.js:12:12)
myapp_1     | 0|heimdall |     at Module._compile (module.js:641:30)
myapp_1     | 0|heimdall |     at Object.Module._extensions..js (module.js:652:10)
myapp_1     | 0|heimdall |     at Module.load (module.js:560:32)
myapp_1     | PM2        | App name:heimdall_app id:0 disconnected

我不确定这里发生了什么,但我猜测依赖项要么没有被安装,要么没有被复制到工作目录中。如何

更新 从原始帖子修改,因为我仍在努力让它发挥作用。

最佳答案

您应该在 npm install 之后复制文件。现在您正在安装依赖项,然后复制所有内容,因此您实际上取消了该安装并且您没有依赖项。

在您的 Dockerfile 中,您有:

...
RUN npm install
RUN npm install pm2 -g
COPY . /usr/src/app
...

应该是:

...
COPY . /usr/src/app
RUN npm install
RUN npm install pm2 -g
...

关于node.js - 学习 NodeJS 和 MongoDB Docker 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457828/

有关node.js - 学习 NodeJS 和 MongoDB Docker 组合的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  3. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  4. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  5. ruby - 最多 n 的组合 - 2

    给定一个数组a,什么是实现其组合直到第n的最佳方法?例如:a=%i[abc]n=2#Expected=>[[],[:a],[:b],[:c],[:a,b],[:b,:c],[:c,:a]] 最佳答案 做如下:a=%w[abc]n=30.upto(n).flat_map{|i|a.combination(i).to_a}#=>[[],["a"],["b"],["c"],["a","b"],#["a","c"],["b","c"],["a","b","c"]] 关于ruby-最多n的组合,我

  6. ruby - Rails 组合多个 activerecord 关系 - 2

    我想合并多个事件记录关系例如,apple_companies=Company.where("namelike?","%apple%")banana_companies=Company.where("namelike?","%banana%")我想结合这两个关系。不是合并,合并是apple_companies.merge(banana_companies)=>Company.where("namelike?andnamelike?","%apple%","%banana%")我要Company.where("名字像?还是名字像?","%apple%","%banana%")之后,我会写代

  7. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  8. ruby-on-rails - Assets 管道损坏 : Not compiling on the fly css and js files - 2

    我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1

  9. ruby-on-rails - Rails - 理解 application.js 和 application.css - 2

    rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:

  10. ruby - 如何在 ruby 中组合/排列? - 2

    我有一个熟悉的问题,看起来像是数学世界的排列/组合。如何通过ruby​​实现以下目标?badges="1-2-3"badge_cascade=[]badges.split("-").eachdo|b|badge_cascade["1","2","3"]ButIwantittobeis:=>["1","2","3","1-2","2-3","3-1","2-1","3-2","1-3","1-2-3","2-3-1","3-1-2"] 最佳答案 函数式方法:bs="1-2-3".split("-")strings=1.upto(bs.

随机推荐