簡體   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