我正在使用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...
我不确定这是码头问题,无花果问题,理智问题还是风帆问题。我也无法弄清楚如何解决它。
答案 0 :(得分:2)
将localhost
替换为mongo容器IP,您应该可以从Docker为您填充的环境变量中获取该容器。
Docker还会为db
中的/etc/hosts
设置一个您可以使用的条目。
答案 1 :(得分: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