无法连接到 docker mongo

Cannot connect to docker mongo

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

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 问题、fig 问题、sane 问题还是 sails 问题。我也不知道如何修复它。

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

Docker 还将在 /etc/hosts 中为 db 设置一个您可以使用的条目。

我是 运行 MongoDB 到 Docker,我得到它来处理这个:

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