一尘不染

从Docker容器连接到主机mongodb

docker

所以我想连接到我在主机上运行的mongodb(DO Drop,Ubuntu 16.04)。它27017在localhost 的默认端口上运行。

然后,我使用mup将我的Meteor应用程序部署在我的DO
Drop上,该DO
Drop使用docker在容器内运行Meteor应用程序。到目前为止,一切都很好。使用标准mongodb://...连接URL将应用程序连接到mongodb。现在我有以下问题:

mongodb://...@localhost:27017...显然不能在docker容器内工作,而localhost不是主机的本地主机。

我已经阅读了很多关于stackoverflow的文章,我已经尝试使用:

  • --network="host"-无法正常运行,因为它0.0.0.0:80已经被使用或类似的东西(nginx代理)
  • --add-host="local:<MY-DROPLET-INTERNET-IP>"并通过连接mongodb://...@local:27017...:也无法正常工作,因为我只能从本地主机访问我的mongodb,而不能从公共IP访问

这必须是一个普遍的问题!

tl; dr-localhost在Docker容器中公开主机的正确方法是什么,以便我可以连接到主机上运行的服务?(包括其端口,例如27017)。

我希望有人能帮帮忙!


阅读 510

收藏
2020-06-17

共1个答案

一尘不染

您可以使用:172.17.0.1因为这是容器可以看到的默认主机ip。但是您需要配置Mongo来收听0.0.0.0

从docker 18.03起,建议连接到特殊的DNS名称host.docker.internal

对于以前的版本,您可以使用DNS名称docker.for.mac.localhostdocker.for.windows.localhost

2020-06-17