簡體   English   中英

在數字海洋上使用mokodb與dokku部署node.js應用程序

[英]deploying node.js app with mongodb with dokku on digital ocean

我正在嘗試使用mokodb在數字海洋上使用dokku部署Node.js應用程序。 不幸的是,我有一些問題讓節點應用程序連接到mongodb。

到目前為止我做了什么。 0.我在git repo中有一個node.js應用程序1.在數字海洋中創建了dokku實例(在ubuntu 14.04上運行)2。我創建了一個dokku-mongodb-plugin(參見https://github.com/jeffutter/dokku -mongodb-plugin ):按照那里的git clone etc安裝說明進行操作。 3.將我的應用程序推送到數字海洋服務器(git push -u production master)4。嘗試創建一個mongodb進程:(在服務器上):dokku mongodb:創建testapp(testapp是我的應用程序的名稱)5。運行我的app: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)在Socket的emit(events.js:98:17)處。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:533:10)在Socket.emit(events.js:95:17)的net.js:440:14處理過程。 _tickCallback(node.js:419:13)

dokku mongodb插件使用RFC 1918專用網絡地址作為其mongodb docker容器。 如本文中所述如何從主機獲取Docker容器的IP地址? 你可以從docker inspect獲取地址。 從docker ps獲取dokku-mongodb容器的容器ID,然后使用該容器ID運行dokku inspect。

當您使用dokku mongodb:link <app> <database>或在創建數據庫時指定應用程序名稱,該數據庫在您的應用程序的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 > 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM