mongodb - 在主机窗口上访问在 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 实例。
解决方案
如果你想从你的主机连接到 docker 容器的端口之一,你需要确保这个端口暴露给主机。
从我在您的屏幕截图中可以看到,您配置的容器是这样一种方式,即只有node
容器公开3001
端口,因此您可以通过 localhost 从主机访问它。
出现问题mongo
是因为您的 docker-compose 配置未将 mongodb 容器(mongo
在您的屏幕截图中命名)端口公开27017
给主机。
所以要解决这个问题,你需要设置ports
. 举个例子:
...
services:
...
mongo:
...
ports:
- "27017"
...
请注意,在公开之前,您需要确保 27017 未被主机上运行的任何其他服务使用。如果此端口繁忙并且您不想停止服务,您可以简单地使用主机上的另一个端口:
...
mongo:
...
ports:
- "27018:27017"
...
更多关于 docker-compose 配置的信息在这里。
推荐阅读
- php - 如何直接从视图中使用外观和库
- python - 如何在不知道列名但在数据框中位置的情况下使用 Python 中的 pct_change 计算数据框中 2 列的百分比变化?
- python - 在追加到数据库之前循环遍历数据框并检查行
- go - 语法错误:意外的逗号,期待 go
- jwt - 多用户的 JWT 架构?
- python - “ValueError:matmul:输入操作数 1 的核心维度 0 不匹配……(大小 2 与 1 不同)”
- python - 页面刷新时 Django 表单不重新渲染
- javascript - 有没有其他方法可以在 React 中为组件添加属性?
- python - 如何计算预测的准确性?
- sql - PostgreSQL 中的交叉表 - 如何在列中按年份显示聚合?