当前位置:  开发笔记 > 编程语言 > 正文

Docker mongo图像'Connection refused'来自其他容器

如何解决《Dockermongo图像'Connectionrefused'来自其他容器》经验,为你挑选了4个好方法。

我是码头工人的新手.我正在尝试创建一个MongoDB容器和一个NodeJS容器.我的文件看起来:

version: '2'
services:
  backend:
    image: node:5.11-onbuild
    ports:
     - "3001:3001"
    volumes:
     - .:/code
    working_dir: "/code"
    links:
     - mongodb
  mongodb:
    image: mongo:3.3
    expose:
     - 27017

它应该运行npm install然后node ..但docker-compose up最终[MongoError: connect ECONNREFUSED 127.0.0.1:27017]会在命令时结束node ..我认为这是因为bind_ip = 127.0.0.1文件中的内容/etc/mongod.conf.这是正确的吗?

我在Win10系统上使用boot2docker.

如何解决此问题以便节点可以连接到MongoDB?



1> Thomasleveil..:

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


有关此问题的其他人的澄清.在您的节点应用程序中:```mongoose.connect('mongodb:// db:27017/whatever');```where'db'是docker-compose.yml中容器的名称 - 即```depends_on : - db db:image:mongodb```
这给了我ENOTFOUND mongodb mongodb:27017

2> 小智..:

我最近遇到类似的问题。我正在win 10下运行docker工具箱,这对我来说是这样的:

1)我必须验证我的默认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)届时,有效的mongo网址应如下所示:

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

192.168.99.100从点1开始的默认机器URL 在哪里?

希望它可以帮助某人。



3> thaJeztah..:

很有可能。127.0.0.1指向mongodb容器内部的localhost ,因此无法从容器外部访问。绑定到0.0.0.0可能会起作用。

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



4> Daniel Andre..:

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

例如,假设您使用生成了脚手架代码expressjs,则必须输入routes/index.js

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

您可以通过以下方式找到容器ip $ docker inspect $CONTAINER_HOSTNAME | grep IPAddress

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

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有