【问题标题】:Node / Express app can't connect to docker mongodbNode / Express 应用程序无法连接到 docker mongodb
【发布时间】:2015-05-02 19:06:32
【问题描述】:

我想运行一个使用 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 配置中的旧 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 化的 mongodb 实例连接起来的正确配置是什么?

【问题讨论】:

    标签: mongodb docker


    【解决方案1】:

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

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

    这将使主机(在您的情况下为虚拟机)上的端口 27017 可访问,并将流量转发到容器上的端口 27017。

    【讨论】:

      猜你喜欢
      • 2019-09-04
      • 2019-05-24
      • 2020-03-31
      • 2017-11-06
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多