MONGO_URL用于在一台服务器上运行多个Meteor应用程序

时间:2016-02-02 11:11:18

标签: javascript node.js mongodb meteor meteor-up

我的Ubuntu服务器(Digital Ocean)上运行了一个Meteor应用程序。我使用Meteor Up(MUP)来部署并保持应用程序运行。一切正常。

但是,当我尝试在同一台服务器上部署第二个应用程序时,连接到MongoDB会出错。我收到一条长而不可读的错误消息,该消息开始“调用部署过程:失败”,然后以

结束
Waiting for MongoDB to initialize. (5 minutes)
connected
myapp start/running, process 25053
Waiting for 15 seconds while app is booting up
Checking is app booted or not?
myapp stop/waiting
myapp start/running, process 25114

该应用拒绝运行。我已经尝试了很多方法来解决这个问题,如果要求更多信息,我会编辑这篇文章,但我不确定它是什么相关的。基本上我不理解错误信息,所以我需要知道到底发生了什么?

编辑: 我想补充说,如果我进入项目文件夹并使用“meteor”命令,我的应用程序运行正常。一切都按预期运行。只有当我尝试使用MUP将其部署到长期生产模式时,我才会收到此错误。

编辑: 我继续尝试mupx而不是mup。这次我甚至无法通过安装过程,我收到以下错误消息:

[Neal] x Installing MongoDB: FAILED

-----------------------------------STDERR-----------------------------------
Error response from daemon: no such id: mongodb
Error: failed to remove containers: [mongodb]
Error response from daemon: Cannot start container c2c538d34c15103d1d07bcc60b56a54bd3d23e50ae7a8e4f9f7831df0d77dc56: failed to create endpoint mongodb on network bridge: Error starting userland proxy: listen tcp 127.0.0.1:27017: bind: address already in use

但我不明白为什么! Mongod显然已在端口27017上运行,第二个应用程序应该只为该实例添加一个新数据库,对吗?我不知道我在这里缺少什么,为什么MUP无法访问MongoDB。

1 个答案:

答案 0 :(得分:1)

如果没有mup.json看这里发生了什么,这很棘手。根据你的说法,看起来你的第二个应用程序部署试图覆盖/引导mongodb超过锁定的第一个,mongodb环境无法启动,导致失败。你应该采取不同的方式:

  • 如果您的目标是分享您的mongoDB,请在您的第一个mongodb实例上指向第二个mup.jon的MONGO_URL。它通常位于2701X端口。由于它是共享数据库,因此一个数据库中的更改可能会影响另一个数据库。
  • meteor-up监督您的应用程序从流星测试到节点+ mongodb环境的部署。您可以生成另一个mongod实例: 在您的DO服务器上mongod --port 2701X --dbpath /your/dbpath --fork --logpath /log/path,然后在那里指向MONGO_URL
  • 最后但并非最不重要的是mupx引擎盖docker。使用mupx进行部署时,应将两个应用程序隔离开来。