MongoDB自动重新连接docker+;node.js+;数据库
在一个容器(container1)中,我有一个正在运行的mongod守护进程。此容器通过node.js(container2)链接到另一个容器 当我开始使用容器时,一切正常:MongoDB自动重新连接docker+;node.js+;数据库,node.js,mongodb,docker,Node.js,Mongodb,Docker,在一个容器(container1)中,我有一个正在运行的mongod守护进程。此容器通过node.js(container2)链接到另一个容器 当我开始使用容器时,一切正常: docker start container1 docker start container2 当我重新启动container1时,第二个容器中的node.js脚本将失去与mongodb的连接,并且无法重新连接,因为mongodb的IP已更改 如何配置node.js以使用mongodb服务器的新IP重新连接 更新:重新启
docker start container1
docker start container2
当我重新启动container1时,第二个容器中的node.js脚本将失去与mongodb的连接,并且无法重新连接,因为mongodb的IP已更改
如何配置node.js以使用mongodb服务器的新IP重新连接
更新:重新启动container1后停止工作的简化代码:
var http = require('http')
, mongodb = require('mongodb');
mongodb.MongoClient.connect('mongodb://username:password@container1:27017/dbname', {uri_decode_auth: true, server: {auto_reconnect: true}}, function(err, db) {
http.createServer(function(request, response) {
// Do some work with db and send response
}).listen(config.port);
});
最简单的解决方案是A.不更改IP地址并分配静态IP的B.使用DNS可解析主机名而不是IP地址。这比试图找出重置连接所需的消息传递要容易得多mongodb://username:password@container1:27017/dbname但是您在哪里定义这些主机名呢?对我来说,连接只是在服务器解析到的新IP地址重新安装。用一些代码更新了问题。重新启动container1之后,db对象就没用了。正如我已经说过的,代码在这里并不重要。您的容器是否设置为在重新启动时更新中心DNS?如果您没有执行中概述的操作,那么是您的配置出了问题。不是程序或驱动程序。最简单的解决方案是A.不更改IP地址并分配静态IP的B.使用DNS可解析的主机名而不是IP地址。这比试图找出重置连接所需的消息传递要容易得多mongodb://username:password@container1:27017/dbname但是您在哪里定义这些主机名呢?对我来说,连接只是在服务器解析到的新IP地址重新安装。用一些代码更新了问题。重新启动container1之后,db对象就没用了。正如我已经说过的,代码在这里并不重要。您的容器是否设置为在重新启动时更新中心DNS?如果您没有执行中概述的操作,那么是您的配置出了问题。不是程序或驱动程序。