所以我想连接到在我的主机上运行的 mongodb(DO droplet,Ubuntu 16.04)。它在默认 27017
上运行本地主机上的端口。
然后我使用 mup在我的 DO droplet 上部署我的 Meteor 应用程序,它使用 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,而不是从公共(public) IP
这一定是个常见问题!
tl;dr - 暴露主机的正确方法是什么 localhost
在 docker 容器内,以便我可以连接到主机上运行的服务? (包括它们的端口,例如 27017)。
希望有人能帮忙!
最佳答案
您可以使用: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
。
关于node.js - 从 docker 容器连接到主机 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461017/