遵循此示例:https://docs.docker.com/engine/examples/mongodb/
尝试使用以下代码连接到mongoDB:mongo ip:27017
(其中ip是来自boot2docker ip的名称)+来自docker ps的端口号:
27017 / TCP
或与-P
0.0.0.0:49155->27017/tcp
无论哪种方式,我都会收到以下错误:
警告:无法连接到ip:27017,原因:错误:61连接 拒绝
错误:无法连接到服务器ip:27017(ip),连接尝试 在src / mongo / shell / mongo.js失败:148异常:连接失败
答案 0 :(得分:19)
如果您指定了正确的端口但仍无法连接到docker中运行的mongodb(例如我),请确保您在连接URL中使用服务名称(或容器名称),例如mongodb://mongodb_service:27017/mydb
,在docker-compose.yml
:
services:
mongodb_service:
image: mongo
我使用的是hostname
值,这不是正确的事情。您可以通过查看docker inspect mongodb_service
部分中的Aliases
来验证这一点。
答案 1 :(得分:13)
我使用的是端口27017而不是49155(doh,端口转发)
0.0.0.0:49155->27017/tcp
感谢ZeissS
答案 2 :(得分:11)
如果您使用的是Mac并使用Docker Machine,请执行以下操作:
1. Get the name of the VM running docker daemon $ docker-machine ls 2. Get the VM's IP info $ docker-machine env 3. Connect with the mongo client to the VM IP and the mongo mapped port $ mongo VM-IP:port
答案 3 :(得分:0)
DATABASE_URI=mongodb://mongo:27017/db_name
应该是如下服务定义的数据库 URI(并且不是 mongodb://localhost
或mongodb://IP
)。使用服务名称或容器名称。
services
mongo:
container_name: mongo
image: mongo
ports:
- '27017:27017'