将robomongo连接到mongoDB docker容器
我正在用运行一个将robomongo连接到mongoDB docker容器,mongodb,docker,robo3t,Mongodb,Docker,Robo3t,我正在用运行一个NodeJS应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但当我连接到时,我看不到任何数据 如何处理此问题?您应该在docker容器内建立到MongoDB的Robomongo SSH隧道连接。首先,您应该在docker容器中安装一个ssh服务器 之后,您应该在Robomongo中配置连接。 在“连接设置”中有Robomongo连接的配置选项卡 转到“SSH”选项卡并配置到docker容器的SSH连接。之后,转到“连接”选项卡,将您与MongoDB的连接
NodeJS
应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但当我连接到时,我看不到任何数据
如何处理此问题?您应该在docker容器内建立到MongoDB的Robomongo SSH隧道连接。首先,您应该在docker容器中安装一个ssh服务器
之后,您应该在Robomongo中配置连接。 在“连接设置”中有Robomongo连接的配置选项卡
转到“SSH”选项卡并配置到docker容器的SSH连接。之后,转到“连接”选项卡,将您与MongoDB的连接配置为本地主机范围。在docker compose文件中,您可以向主机公开端口
app:
image: node
volumes:
- /app
ports:
- "27018:27017"
例如,以下代码将把机器内部的端口27017暴露给主机中的端口27018
app:
image: node
volumes:
- /app
ports:
- "27018:27017"
然后,如果您安装了docker机器,并且您的机器是默认,您可以在终端中执行以下操作:
docker-machine ip default
它将为您提供主机的ip,例如192.168.2.3。数据库(主机)的地址为192.168.2.3,端口为27018
如果您的docker机器不是虚拟的,并且是您的操作系统,那么您的数据库地址将是localhost和端口27018。请注意,您可能无法使用ssh,因为这只是mongo和robomongo之间不兼容的问题
“Robomongo v8.5及更低版本不支持MongoDB 3”。这与docker无关。还有另一种方法。你可以
docker ps
应该向您展示您的MongoDB容器docker inspect
将打印出关于该容器的完整信息。最后查找IPAddress
,它将为您提供容器的本地IP另一个旁注:确保不要以任何方式公开mongodb服务端口(Dockerfile和docker compose.yml),因为这将使您的数据库可以从任何地方公开访问。假设您没有为该服务设置用户名/密码,您很快就会被扫描和黑客攻击。最简单的方法是启用转发Mongo容器本身,下面是我的docker compose的样子
mongo:
image: mongo
restart: always
ports:
- 27017:27017
我面临着一个不同的问题。我已经在本地安装了MongoDB。所以,当docker上的MongoDB运行时,它与我主机上运行的MongoDB发生冲突。我使用
brew
安装了它
所以,我跑了
brew服务停止mongodb社区
然后我重新启动了Robo3t。我看到MongoDB中创建的数据库在docker上运行
瞧 首先使用ssh登录详细信息登录
您能分享一些详细信息或可能是您迄今为止尝试过的内容的截图吗?嘿,Siddharth Ajmera,我只是尝试使用robomongo查看我的数据,但它没有显示任何内容,mongoDB正在docker容器中运行,您能看到RoboMongo中列出的数据库和集合吗?我只看到了我的数据库名称,但未显示集合:(双击您的集合。您将在一个层次结构中获得3个文件夹:集合、函数、用户。双击您的集合将显示该数据库中的集合。是的,haverchuck这是我所做的,但对于robomongo,它似乎需要更多配置:)这对我来说不起作用,所以我找到了一个更符合docker理念的解决方案:按照描述制作一个ssh docker,然后使用
-link\u mymongodocker\u
参数运行它(还有一个22的端口映射,所以我肯定很容易找到)。然后在robomongo中,我使用mymongodocker而不是localhost(因为它是链接的,所以可以从ssh docker获得)。即使--link不受欢迎,应该用一种更现代的方法来取代,但它仍然很有魅力,因为我太懒了:)这是对我来说唯一有效的答案,因为我在云服务器上,我肯定不会公开我的数据库端口或更改任何容器。谢谢!我在docker compose文件中使用了ecpose。这只会打开服务器内部的端口。所以你可以使用expose,但不使用ports。这会为所有人打开它。有人不同意吗?查找MongoDB容器非常有用,谢谢。出于开发目的,我使用了这个methoddude,它帮了我的忙!谢谢你提供了这个小贴士。未来的读者阅读:如果你在尝试连接到容器中运行的mongo之前用brew安装了mongo,一定要检查一下。@finiteloop很高兴能提供帮助:)在大多数情况下,这应该是解决方案。谢谢你man@SeanKonig很高兴能帮上忙:)