gpt4 book ai didi

node.js - 在 digital ocean 上使用 mongodb 和 dokku 部署 node.js 应用程序

转载 作者:IT老高 更新时间:2023-10-28 13:36:21 28 4
gpt4 key购买 nike

我正在尝试使用 dokku 在 digital ocean 上部署带有 mongodb 的 Node.js 应用程序。不幸的是,我在将 Node 应用程序连接到 mongodb 时遇到了一些问题。

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

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

我已经测试过:dokku mongodb:列表

它没有返回任何东西,这让我觉得插件可能有问题?

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

无论如何,我不确定问题出在哪里。任何帮助将不胜感激。

干杯,迈克

vents.js:72 throw 者;//未处理的“错误”事件 ^错误:无法连接到 [localhost:27017] 在空。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:546:74) 在发出 (events.js:106:17) 在空。 (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:150:15) 在发射(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 在 process._tickCallback (node.js:419:13)

最佳答案

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名在你的app的dokku config中设置一系列mongodb环境变量,你可以通过运行dokku config 查看.

$ 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 >

关于node.js - 在 digital ocean 上使用 mongodb 和 dokku 部署 node.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com