Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB自动重新连接docker+;node.js+;数据库_Node.js_Mongodb_Docker - Fatal编程技术网

MongoDB自动重新连接docker+;node.js+;数据库

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重新连接 更新:重新启

在一个容器(container1)中,我有一个正在运行的mongod守护进程。此容器通过node.js(container2)链接到另一个容器

当我开始使用容器时,一切正常:

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?如果您没有执行中概述的操作,那么是您的配置出了问题。不是程序或驱动程序。