Node / Express应用程序无法连接到docker mongodb

时间:2015-05-02 06:26:16

标签: mongodb docker

我想运行一个使用express的节点应用程序并连接到(boot2docker)docker mongo容器。

当我第一次编写应用程序时,我使用的是本地安装的mongodb实例,并且以下配置有效:

module.exports = {
  env: 'development',
  mongo: {
    uri: 'mongodb://localhost/fullstack-dev'
  }
};

它按预期运行。

现在我试图将其换成mongo的docker实例。

所以,我已经完成了以下步骤来运行mongo:

$ docker pull mongo:latest
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
$ docker ps

#my mongo instance is 442c2541fe1a
$ docker exec -it 442c2541fe1a bash
$ mongo

此时,似乎在我的命令提示符下运行。

然后,我试图获得在osx上运行docker的boot2docker vm的IP:

$ boot2docker ip
# the IP returned: 192.168.59.103

那么,我就把nodejs config中的旧mongodb路径换成了以下内容:

module.exports = {
  env: 'development',
  mongo: {
    uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
  }
};

当我运行应用程序时,出现连接错误。

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [192.168.59.103:27017]

将MEAN堆栈应用程序与docker' ified mongodb实例连接的正确配置是什么?

1 个答案:

答案 0 :(得分:7)

您需要使用-p参数在容器上发布相应的端口,即:

docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles

将在主机(您的情况下为VM)上访问端口27017,并将流量转发到容器上的端口27017.

相关问题