首页 > 解决方案 > 在主机窗口上访问在 docker + wsl2 内运行的 mongodb

问题描述

我正在使用 docker-compose 作为 docker 容器运行 mongodb 实例,该容器在 Windows 10 机器上的 WSL2 环境中运行。

在此处输入图像描述

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

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

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

标签: mongodbwindows-subsystem-for-linuxwsl-2

解决方案


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

从我在您的屏幕截图中可以看到,您配置的容器是这样一种方式,即只有node容器公开3001端口,因此您可以通过 localhost 从主机访问它。

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

所以要解决这个问题,你需要设置ports. 举个例子:

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

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

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

更多关于 docker-compose 配置的信息在这里


推荐阅读