我正在使用docker-compose运行NodeJS
应用。一切正常,我可以通过连接到容器内的Mongo来查看我的所有数据。但是当我连接到RoboMongo时,我看不到任何数据。
我该如何处理这个问题?
答案 0 :(得分:18)
还有另一种方式。你可以
// may make the list larger than necessary
// its internal array is copied each time the list grows beyond its capacity
// code is very straight forward
progression.map { Math.sqrt(it.toDouble()) }
// will make the list the exact size needed
// no copies are made
// code is more complicated
progression.mapTo(ArrayList(progression.last / 2 + 1)) { Math.sqrt(it.toDouble()) }
// will make the list the exact size needed
// a single intermediate list is made
// code is minimal and makes sense
progression.toList().map { Math.sqrt(it.toDouble()) }
应该会显示您的MongoDB容器。docker ps
将打印出有关该容器的完整信息。最后查找docker inspect <mongo container id>
,它将为您提供容器的本地IP。另一个旁注: 确保您不以任何方式暴露您的mongodb服务端口(Dockerfile和docker-compose.yml),因为这将使您的数据库从各地公开访问。假设您没有为该服务设置用户名/密码,您很快就会被扫描并入侵。
答案 1 :(得分:4)
最简单的方法是启用转发Mongo Container本身,这就是我的docker-compose的样子。
mongo:
image: mongo
restart: always
ports:
- 27017:27017
答案 2 :(得分:3)
你应该在docker容器内部对MongoDB进行Robomongo SSH隧道连接。首先,您应该在docker容器中安装ssh服务器。
https://docs.docker.com/engine/examples/running_ssh_service/
之后,您应该在Robomongo中配置您的连接。 在“连接设置”中,有Robomongo连接的配置选项卡。
转到“SSH”选项卡并配置与docker容器的SSH连接。之后转到“连接”选项卡并配置与MongoDB的连接,就像它在localhost范围内一样。
答案 3 :(得分:1)
请注意,您可能无法使用ssh,因为这只是mongo和robomongo之间不兼容的问题。
&#39; Robomongo v8.5及更低版本不支持MongoDB 3&#39;。它与docker无关。
答案 4 :(得分:1)
我面临着另一个问题。我已经在本地安装了MongoDB。因此,当docker上的MongoDB运行时,它与在我的主机上运行的MongoDB发生冲突。我已经使用brew
安装了它。
所以,我跑了
brew services stop mongodb-community
,然后我重新启动Robo3t。我看到了在docker上运行的MongoDB中创建的数据库。
Voila!
答案 5 :(得分:0)
首先使用 ssh 登录详细信息
docker 检查 container_id
创建新连接并添加容器ID 使用 ssh 登录详细信息连接到 mongodb
答案 6 :(得分:-3)
在您的docker-compose文件中,您可以向主机公开端口。
例如,以下代码将机器内的端口27017暴露给主机中的端口27018.
app:
image: node
volumes:
- /app
ports:
- "27018:27017"
然后,如果您安装了 docker-machine 并且您的计算机默认,则可以在终端中执行此操作:
docker-machine ip default
它将为您提供主机的IP,例如 192.168.2.3 。数据库(主机)的地址为 192.168.2.3 ,端口 27018 。
如果您的泊坞机不是虚拟机并且是您的操作系统,则数据库的地址将是 localhost ,端口 27018 。