在数字海洋上使用mokodb与dokku部署node.js应用程序

时间:2014-07-20 18:59:45

标签: node.js mongodb digital-ocean dokku

我正在尝试使用dokku在数字海洋上部署带有mongodb的Node.js应用程序。不幸的是,我有一些问题让节点应用程序连接到mongodb。

到目前为止我做了什么。 我在git repo中有一个node.js应用程序 1.在数字海洋中创建dokku实例(在ubuntu 14.04上运行) 2.我创建了一个dokku-mongodb-plugin(参见https://github.com/jeffutter/dokku-mongodb-plugin):在那里按照git clone等安装说明进行操作。 3.将我的应用程序推送到数字海洋服务器(git push -u production master) 4.尝试创建一个mongodb进程:(在服务器上):dokku mongodb:创建testapp(testapp是我的应用程序的名称) 5.运行我的应用程序:dokku运行testapp节点app.js

这会导致连接错误(在底部)

我测试过: dokku mongodb:list

并且它没有返回任何内容,这让我觉得插件可能存在问题?

否则,我怀疑这可能是因为mongodb在与标准localhost不同的ip /进程下运行。

无论如何,我不确定问题是什么。任何帮助将不胜感激。

干杯,迈克

vents.js:72         扔掉//未处理的错误'事件               ^ 错误:无法连接到[localhost:27017]     在null。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:546:74)     在emit(events.js:106:17)     在null。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:150:15)     在emit(events.js:98:17)     在Socket。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:533:10)     在Socket.emit(events.js:95:17)     at net.js:440:14     at process._tickCallback(node.js:419:13)

1 个答案:

答案 0 :(得分:6)

dokku mongodb插件为其mongodb docker容器使用RFC 1918专用网络地址。如本文How to get a Docker container's IP address from the host?所述,您可以从docker inspect获取地址。从docker ps获取dokku-mongodb容器的容器ID,然后使用该容器ID运行dokku inspect。

当你使用dokku mongodb时:link< app> <数据库>或者在创建数据库时指定应用程序名称,该数据库在应用程序的dokku配置中设置一系列mongodb环境变量,您可以通过运行dokku config< app>。

$ dokku config test
=== test config vars ===
NODE_ENV:         test
MONGODB_DATABASE: "myapp-test-db-production"
MONGODB_HOST:     "172.17.0.123"
MONGODB_PORT:     "27017"
MONGODB_USERNAME: "test"
MONGODB_PASSWORD: "***********************"
MONGO_URL:        "mongodb://test:**********************@172.17.0.123:27017/myapp-test-db-production"

您需要从mongodb连接代码中引用这些环境变量。在我的例子中,我使用的是meanjs.org模板,所以我将config / env / test.js中db的值设置为db:process.env.MONGO_URL,并使用dokku config:set添加了NODE_ENV = test。

'use strict';

module.exports = {
    db: process.env.MONGO_URL,
    // db: 'mongodb://localhost/mean-test',
< snip > 
相关问题