泊坞窗蒙戈图像从其他容器“连接被拒绝”

我是docker工人。 我正在尝试创build一个MongoDB容器和一个NodeJS容器。 我的文件看起来像这样 。

它应该运行npm install然后运行node . 。 但是[MongoError: connect ECONNREFUSED 127.0.0.1:27017] docker-compose up最后以[MongoError: connect ECONNREFUSED 127.0.0.1:27017]为命令node . 。 我想这是因为文件/etc/mongod.conf中的bind_ip = 127.0.0.1 。 这是正确的吗?

我在Win10系统上使用boot2docker。

我怎样才能解决这个问题,使节点可以连接到MongoDB?

在您的后端应用程序中,连接到mongodb:27017而不是127.0.0.1:27017 。 其中“mongodb”是docker-compose.yml中容器的名称。

很可能,是的。 127.0.0.1指向mongodb容器的localhost,所以不能从容器外部访问。 绑定到0.0.0.0可能会工作。

通过你在docker-compose.yml中指定的链接,你的后端容器应该能够通过mongodb:27017连接到mongo容器mongodb:27017

您必须告诉容器使用它自己的IP地址而不是本地主机。

例如,假设您使用expressjs生成脚手架代码, expressjs必须使用routes/index.js编写expressjs代码

 var mongodb = require('mongodb'); router.get('/thelist', function(req, res){ // Get a Mongo client to work with the Mongo server var MongoClient = mongodb.MongoClient; // Define where the MongoDB server is var url = 'mongodb://172.17.0.5:27017/dbname'; // Connect to the server MongoClient.connect(url, function (err, db) { ......... 

其中172.17.0.5$CONTAINER_IP

你可以通过$ docker inspect $CONTAINER_HOSTNAME | grep IPAddress容器ip, $ docker inspect $CONTAINER_HOSTNAME | grep IPAddress $ docker inspect $CONTAINER_HOSTNAME | grep IPAddress

如果你仍然不明白你可以看看我的Docker NodeJS和MongoDB应用程序

我最近遇到类似的问题。 我正在运行docker工具箱赢下10,这是如何为我工作:

1)我必须validation我的默认docker机正在使用哪个URL。 这可以通过运行docker-machine ls命令来检查。 它将列出可用的机器:

 NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:1234 v17.06.0-ce rancher-client - virtualbox Stopped Unknown rancher-server - virtualbox Stopped Unknown 

2)运行mongodb映像时指定端口映射

 docker run -d -it -p 27017:27017 mongo 

3)在这一点上,有效的mongourl看起来像这样

 var dbhost = 'mongodb://192.168.99.100:27017/test 

其中192.168.99.100是来自点1)的默认机器URL,

希望它可以帮助别人。