我正在使用docker-composeNodeJS
运行应用程序。一切正常,我可以通过连接到容器内的 Mongo 来查看我的所有数据。但是当我连接到RoboMongo时,我看不到任何数据。
我该如何处理这个问题?
我正在使用docker-composeNodeJS
运行应用程序。一切正常,我可以通过连接到容器内的 Mongo 来查看我的所有数据。但是当我连接到RoboMongo时,我看不到任何数据。
我该如何处理这个问题?
还有另一种方法。你可以
docker ps
应该向您展示您的 MongoDB 容器。docker inspect <mongo container id>
将打印出有关该容器的完整信息。最后查找IPAddress
,这将为您提供容器的本地 IP。另一个旁注: 确保您不以任何方式(Dockerfile 和 docker-compose.yml)公开您的 mongodb 服务端口,因为这将使您的数据库可以从任何地方公开访问。假设您没有为该服务设置用户名/密码,您将很快被扫描和黑客攻击。
最简单的方法是启用转发 Mongo 容器本身,这就是我的 docker-compose 的样子。
mongo:
image: mongo
restart: always
ports:
- 27017:27017
您应该在 docker 容器中与 MongoDB 建立 Robomongo SSH 隧道连接。首先你应该在你的 docker 容器中安装一个 ssh 服务器。
https://docs.docker.com/engine/examples/running_ssh_service/
之后,您应该在 Robomongo 中配置您的连接。在“连接设置”中有您的 Robomongo Connection 的配置选项卡。
转到“SSH”选项卡并配置与 docker 容器的 SSH 连接。之后转到“连接”选项卡并配置与 MongoDB 的连接,就好像它在 localhost 范围内一样。
我面临一个不同的问题。我已经在本地安装了 MongoDB。因此,当 docker 上的 MongoDB 运行时,它与我主机上运行的 MongoDB 发生冲突。我已经使用brew
.
所以,我跑了
brew services stop mongodb-community
然后我重新启动了 Robo3t。我看到在 MongoDB 中创建的数据库在 docker 上运行。
瞧!
请注意,您可能无法使用 ssh,因为这只是 mongo 和 robomongo 之间不兼容的问题。
'Robomongo v8.5 及更低版本不支持 MongoDB 3'。它与码头无关。
在您的 docker-compose 文件中,您可以向主机公开一个端口。
例如,下面的代码会将机器内部的 27017 端口暴露给主机的 27018 端口。
app:
image: node
volumes:
- /app
ports:
- "27018:27017"
然后,如果您安装了docker-machine并且您的机器是default,您可以在终端中执行以下操作:
docker-machine ip default
它将为您提供主机的 ip,例如192.168.2.3。您的数据库(主机)的地址将是192.168.2.3和端口27018。
如果您的 docker 机器不是虚拟的并且是您的操作系统,那么您的数据库地址将是localhost和端口27018。