我在 WSL2 的容器中运行了一个 MongoDB 实例。
当我尝试在浏览器中发出请求时localhost:27017
,即使它显示错误,它也可以工作,因为我尝试使用 HTTP 协议访问数据库。
但是,当我尝试使用主机名 localhost 和端口 27017 从 Compass 访问我的数据库时,我在 30000 毫秒后超时,我无法访问它。
有人知道为什么吗?
我在 WSL2 的容器中运行了一个 MongoDB 实例。
当我尝试在浏览器中发出请求时localhost:27017
,即使它显示错误,它也可以工作,因为我尝试使用 HTTP 协议访问数据库。
但是,当我尝试使用主机名 localhost 和端口 27017 从 Compass 访问我的数据库时,我在 30000 毫秒后超时,我无法访问它。
有人知道为什么吗?
我只能使用 WSL2 IP 地址连接 mongoDB 实例。
你可以通过在 WSL 中运行这个来获得它:
ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1
或者这个在windows主机上的powershell中:
[Regex]::Match((wsl -- ip addr show eth0), 'inet (?<IP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/').Groups["IP"].Value
坏消息:每次 WSL2 重新启动时,此 IP 都会更改。有一个go-wsl2-host为这个 IP 添加一个主机并保持更新。但我从来没有用过。