【问题标题】:Cannot connect to docker mongo无法连接到 docker mongo
【发布时间】:2015-02-17 13:40:47
【问题描述】:

我正在使用带有 docker 的 sane 设置一个项目。创建项目以使用 mongodb 并创建资源后,我尝试运行它,但收到错误报告,服务器容器无法连接到 mongo。然后我尝试运行fig up 看看它是否是一个无花果问题并得到了同样的错误。这是我的fig.yml(已删除无关的 cmets):

db:
  image: mongo:latest
  ports:
    - "27017:27017"
server:
  image: artificial/docker-sails:stable-pm2
  command: sails lift
  volumes:
    - server/:/server
  ports:
    - "1337:1337"
  links:
    - db

fig up 的完整错误报告如下(sane up 的错误报告是一样的,虽然db_1 的输出更简洁,并且还有几行输出给客户端):

Recreating hydro_db_1...
Recreating hydro_server_1...
Attaching to hydro_db_1, hydro_server_1
db_1     | mongod --help for help and startup options
db_1     | 2015-02-17T13:32:00.092+0000 [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=b7a85ddb94e2
db_1     | 2015-02-17T13:32:00.093+0000 [initandlisten] db version v2.6.7
db_1     | 2015-02-17T13:32:00.094+0000 [initandlisten] git version: a7d57ad27c382de82e9cb93bf983a80fd9ac9899
db_1     | 2015-02-17T13:32:00.094+0000 [initandlisten] build info: Linux build7.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
db_1     | 2015-02-17T13:32:00.094+0000 [initandlisten] allocator: tcmalloc
db_1     | 2015-02-17T13:32:00.094+0000 [initandlisten] options: {}
db_1     | 2015-02-17T13:32:00.099+0000 [initandlisten] journal dir=/data/db/journal
db_1     | 2015-02-17T13:32:00.099+0000 [initandlisten] recover : no journal files present, no recovery needed
db_1     | 2015-02-17T13:32:00.274+0000 [initandlisten] waiting for connections on port 27017
server_1 | 
server_1 | info: Starting app...
server_1 | 
server_1 | error: A hook (`orm`) failed to load!
server_1 | error: Error: Failed to connect to MongoDB.  Are you sure your configured Mongo instance is running?
server_1 |  Error details:
server_1 | [Error: failed to connect to [localhost:27017]]
server_1 |     at _createError (/server/node_modules/sails-mongo/lib/adapter.js:98:23)
server_1 |     at /server/node_modules/sails-mongo/lib/adapter.js:101:13
server_1 |     at /server/node_modules/sails-mongo/lib/connection.js:25:20
server_1 |     at /server/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/mongo_client.js:406:11
server_1 |     at process._tickDomainCallback (node.js:486:13) { [Error: Failed to connect to MongoDB.  Are you sure your configured Mongo instance is running?
server_1 |  Error details:
server_1 | [Error: failed to connect to [localhost:27017]]]
server_1 |   originalError: [Error: failed to connect to [localhost:27017]] }
server_1 | error: Error: Failed to connect to MongoDB.  Are you sure your configured Mongo instance is running?
server_1 |  Error details:
server_1 | [Error: failed to connect to [localhost:27017]]
server_1 |     at _createError (/server/node_modules/sails-mongo/lib/adapter.js:98:23)
server_1 |     at /server/node_modules/sails-mongo/lib/adapter.js:101:13
server_1 |     at /server/node_modules/sails-mongo/lib/connection.js:25:20
server_1 |     at /server/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/mongo_client.js:406:11
server_1 |     at process._tickDomainCallback (node.js:486:13) { [Error: Failed to connect to MongoDB.  Are you sure your configured Mongo instance is running?
server_1 |  Error details:
server_1 | [Error: failed to connect to [localhost:27017]]]
server_1 |   originalError: [Error: failed to connect to [localhost:27017]] }
hydro_server_1 exited with code 1
Gracefully stopping... (press Ctrl+C again to force)
Stopping hydro_db_1...

我不确定这是 docker 问题、无花果问题、理智问题还是风帆问题。我也不知道怎么解决。

【问题讨论】:

  • 看起来localhost 需要替换为 mongo 容器 IP,您应该可以从环境变量中获取该 IP。
  • 当然!现在我觉得自己像个白痴......实际上在我的情况下,它就像将主机设置为db 一样简单。感谢您指出这一点,如果您将其发布为答案,我会接受它
  • 没问题,我不确定它看起来是否简单 :)

标签: mongodb docker sails.js sails-mongo fig


【解决方案1】:

localhost 替换为 mongo 容器 IP,您应该能够从 Docker 将为您填充的环境变量中获取该 IP。

Docker 还会在/etc/hosts 中为db 设置一个条目供您使用。

【讨论】:

    【解决方案2】:

    我正在通过 Docker 运行 MongoDB,并且可以使用它:

    $ export dockerip="$(docker-machine ls | awk '{print $5}' | sed -n '2p' | sed 's/tcp:\/\///' | sed 's/\:2376//')"
    $ mongo --host "$dockerip" --port 27017
    

    【讨论】:

    • 稍微解释一下这些行的作用会很好。
    猜你喜欢
    • 2018-09-02
    • 2016-12-31
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多