1

我正在使用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...

我不确定这是码头工人问题、无花果问题、理智问题还是帆问题。我也无法弄清楚如何解决它。

4

2 回答 2

2

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

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

于 2015-02-17T17:27:29.333 回答
0

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

$ export dockerip="$(docker-machine ls | awk '{print $5}' | sed -n '2p' | sed 's/tcp:\/\///' | sed 's/\:2376//')"
$ mongo --host "$dockerip" --port 27017
于 2015-09-17T16:18:55.387 回答