gpt4 book ai didi

node.js - 从 docker 容器连接到主机 mongodb

转载 作者:IT老高 更新时间:2023-10-28 21:19:39 27 4
gpt4 key购买 nike

所以我想连接到在我的主机上运行的 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.localhostdocker.for.windows.localhost

关于node.js - 从 docker 容器连接到主机 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com