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

Docker mongo image 'Connection refused' from other container

我是 docker 的新手。我正在尝试创建一个 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 . 结束。 我认为这是因为文件 /etc/mongod.conf 中的 bind_ip = 127.0.0.1。这样对吗?

我在Win10系统上使用boot2docker

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

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

使用您在 docker-compose.yml 中指定的 link,您的后端容器应该能够通过 mongodb:27017[=11 连接到 mongo 容器=]

在您的后端应用中,连接到 mongodb:27017 而不是 127.0.0.1:27017。其中 'mongodb' 是 service 在 docker-compose.yml.

中的名称

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

例如,假设您使用 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 and MongoDB app

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

1) 我必须验证 URL 我的默认 docker 机器正在使用哪个。这可以通过 运行 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 image指定端口映射

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

3) 那时有效的 mongo url 看起来像这样

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

其中 192.168.99.100 是点 1)

中的默认计算机 URL

希望对大家有所帮助。