在主机 windows 上访问 mongodb 运行 inside docker + wsl2

access mongodb running inside docker + wsl2, on Host windows

我是 运行 mongodb 实例,使用 docker-compose 作为 docker 容器,在 [=27 上的 WSL2 环境中 运行 =] 10台机器。

从我的主机 windows 10 台机器,我能够连接到 nodejs 容器 http://localhost:3001/api/v1,同样使用 mongo-compass 我无法连接到 mongo数据库实例,

我得到的错误是 connect ECONNREFUSED 127.0.0.1:27017

请帮忙,我如何从主机 windows 机器连接到 mongodb 实例。

如果你想从你的主机连接到 docker 容器的端口之一,你需要确保这个端口暴露给主机。

从我在你的截图上看到的,你的容器配置是这样的,只有 node 容器暴露 3001 端口,因此你可以通过本地主机从你的主机访问它。

mongo 出现问题是因为您的 docker-compose 配置没有公开 mongodb 容器(在您的屏幕截图中名为 mongo)端口 27017 到主机。

所以要解决这个问题,您需要设置 ports。例如:

...
services:
...
mongo:
  ...
  ports:
    - "27017"
...

请注意,在公开之前,您需要确保主机上的任何其他服务 运行 未使用 27017。如果此端口繁忙并且您不想停止服务,您可以简单地使用主机上的另一个端口:

...
mongo:
  ...
  ports:
    - "27018:27017"
...

关于 docker-compose 配置的更多信息是 here