我想连接到运行在我的主机上(DO droplet,Ubuntu 16.04)的mongodb。它在默认的本地端口27017
上运行。
然后我使用mup部署我的Meteor应用程序到我的DO droplet上,它使用docker在容器中运行我的Meteor应用程序。到目前为止一切顺利。
使用标准的 mongodb://...
连接URL将应用程序连接到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)。
希望有人能够帮助!
172.17.0.1
是网关 IP,它是运行 Docker 的主机(而不是容器)。如果定义了自定义的 Docker 网络,则该 IP 可能是另一个。 - Robertdocker.for.mac.localhost
对我的情况非常有用,0.0.0.0
不能使用。 - dimpiaxhost.docker.internal
的 DNS,用于连接主机。 - Ting Yi Shih