所以我想连接到我的主机上运行的mongodb(DO droplet,Ubuntu 16.04)。它在localhost上的默认27017
端口上运行。
然后我使用mup在我的DO Droplet上部署我的Meteor应用程序,它使用docker在容器内运行我的Meteor应用程序。到现在为止还挺好。
标准mongodb://...
连接网址用于将应用连接到mongodb。
现在我有以下问题:
mongodb://...@localhost:27017...
显然在docker容器内不起作用,因为localhost
不是主机的localhost。
我已经阅读了很多关于此的stackoverflow帖子,我已经尝试过使用:
--network="host"
- 没有用,因为0.0.0.0:80
已经在使用或类似的东西(nginx代理)--add-host="local:<MY-DROPLET-INTERNET-IP>"
并通过mongodb://...@local:27017...
连接:也无法正常工作,因为我只能从localhost访问我的mongodb,而不能从公共IP访问这必须是一个常见的问题!
tl; dr - 在docker容器中公开主机localhost
的正确方法是什么,以便我可以连接到主机上运行的服务? (包括他们的港口,例如27017)。
我希望有人可以提供帮助!
答案 0 :(得分:18)
您可以使用:172.17.0.1
,因为它是容器可以看到的默认主机IP。但是你需要配置Mongo来收听0.0.0.0
。
从docker 18.03开始the recommendation将连接到特殊DNS名称host.docker.internal
对于以前的版本,您可以使用DNS名称docker.for.mac.localhost
或docker.for.windows.localhost
。
答案 1 :(得分:0)
在/etc/mongod.conf中将bindIp从127.0.0.1更改为0.0.0.0。这样就可以了