Meteor两个服务器实例具有相同的代码但不同的mongo数据库

时间:2017-09-01 15:00:43

标签: mongodb meteor server

我需要帮助在同一台计算机上设置两个流星实例(此计算机用作服务器)。每个实例应该运行相同的代码(在构建流星应用程序之后)并使用不同的mongo数据库。

我已经厌恶并试图找到一个教程指南来做这个,但我还没有找到任何东西。我怎么能这样做?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

你可以这么做,并尝试通过docker容器连接到几个mongodb实例,或者只是简单的方法,并将你的每个meteor实例与你的mongodb中的a single database相关联。

我知道命名很混乱,因为你可能会想到#34;但是mongodb是我的数据库!?"。但想想这个:

mongodb是您的数据库进程,对于每个应用程序,您可以使mongodb关联数据库。

你可以这样做:

<强> 1。打开你的生产数据库的mongo shell(不是你的本地流星数据库)

mongo

<强> 2。在mongo shell中,为您的两个应用创建数据库and a database user

use app1db

app1db.createUser({ 
    user: "app1dbuser",
    pwd: "app1dbpassword",
    roles: [{ role: "readWrite", db: "app1db" }]
});

use app2db

app2db.createUser({ user: "app2dbuser",
    pwd: "app2dbpassword",
    roles: [{ role: "readWrite", db: "app2db" }]
});

第3。使用您的数据库启动流星应用程序实例(假设您的mongodb使用本地IP和defualt端口)

APP1

MONGO_URL="mongodb://app1dbuser:app1dbpassword@127.0.0.1:27017/app1db"

APP2

MONGO_URL="mongodb://app2dbuser:app2dbpassword@127.0.0.1:27017/app2db"

应用程序创建的数据存储在每个应用程序的每个数据库中。 App1无法访问app2的数据库,反之亦然。

我希望这有助于实现您的目标。

答案 1 :(得分:0)

您可以在不同的端口上运行这两个实例 你这样做:
对于第一个实例meteor --port 3000
第二个实例meteor --port 4000

他们将使用相同的mongo db。

答案 2 :(得分:0)

在一个终端中,在端口3000上启动meteor,连接到名为db1

的数据库
export MONGO_URL=mongodb://localhost:27017/db1 
meteor --port 3000

在另一个终端中,在端口4000上启动meteor,连接到名为db2

的数据库
export MONGO_URL=mongodb://localhost:27017/db2 
meteor --port 4000