繁体   English   中英

将 robomongo 连接到 mongoDB docker 容器

[英]connect robomongo to mongoDB docker container

我正在使用docker-compose运行NodeJS应用程序。 一切正常,我可以通过连接到容器内的 Mongo 来查看我的所有数据。 但是当我连接到RoboMongo 时,我看不到任何数据。

我该如何处理这个问题?

还有另一种方法。 你可以

  1. 使用 Robomongo SSH 进入托管 docker 应用程序的实际虚拟服务器(SSH 选项卡,选中“使用 SSH 隧道”并相应地完成其他字段)
  2. 现在 ssh 进入终端中的同一台机器。
  3. docker ps应该会显示你的 MongoDB 容器。
  4. docker inspect <mongo container id>将打印出有关该容器的完整信息。 最后查找IPAddress ,它将为您提供容器的本地 IP。
  5. 在 Robomongo 的“连接”选项卡中,使用该容器 IP 进行连接。

另一个旁注:确保您没有以任何方式公开您的 mongodb 服务端口(无论是 Dockerfile 还是 docker-compose.yml),因为这将使您的数据库可以从任何地方公开访问。 假设您没有为该服务设置用户名/密码,您很快就会被扫描和入侵。

最简单的方法是启用转发 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 连接的配置选项卡。

转到“SSH”选项卡并配置与 docker 容器的 SSH 连接。 之后转到“连接”选项卡并配置与 MongoDB 的连接,就好像它在 localhost 范围内一样。

我面临着不同的问题。 我在本地安装了 MongoDB。 因此,当 docker 上的 MongoDB 运行时,它与我主机上运行的 MongoDB 发生冲突。 我已经使用brew安装了它。

所以,我跑了

brew services stop mongodb-community

然后我重新启动了 Robo3t。 我看到在 docker 上运行的 MongoDB 中创建的数据库。

瞧!

请注意,也许您将无法使用 ssh,因为这只是 mongo 和 robomongo 之间不兼容的问题。

'Robomongo v8.5 及更低版本不支持 MongoDB 3'。 它与 docker 无关。

首先使用ssh登录登录详细信息

  1. ssh -i yourpemfile.pem 用户名@ipaddress 在此处输入图片说明

  2. 检查 MongoDB 的运行容器 ID

    docker ps -a

  3. 然后检查mongo容器ID

码头工人检查容器_id

在此处输入图片说明

  1. 然后打开robo3t

创建新连接并添加容器 id 使用 ssh 登录详细信息连接到 mongodb

在此处输入图片说明 在此处输入图片说明

在您的 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM