2016-03-01 124 views
9

我正在運行NodeJS應用程序docker-compose。一切正常,我可以通過連接到容器內的Mongo來查看我的所有數據。但是,當我連接到RoboMongo我沒有看到任何數據。將robomongo連接到mongoDB碼頭集裝箱

我該如何處理這個問題?

+1

你可以請分享一些細節,或者截圖到目前爲止所嘗試的嗎? –

+0

嘿Siddharth Ajmera我只是嘗試使用robomongo來查看我的數據,但它沒有顯示任何內容,mongoDB在碼頭集裝箱內運行 – migorman

+0

您能看到RoboMongo中列出的數據庫和集合嗎? –

回答

2

您應該在Docker容器中執行一個到MongoDB的Robomongo SSH隧道連接。首先你應該在docker容器中安裝一個ssh服務器。

https://docs.docker.com/engine/examples/running_ssh_service/


之後,你應該配置在Robomongo您的連接。 「連接設置」裏面有Robomongo Connection的配置選項卡。

轉到「SSH」選項卡並配置您的SSH連接到碼頭集裝箱。之後,進入「連接」選項卡並配置到MongoDB的連接,就好像它在localhost範圍內一樣。

+1

再次感謝André的幫助:)它的工作原理! – migorman

+0

不客氣! –

+0

沒有爲我工作,所以我找到了一個解決方案,更好地與碼頭理念對齊:按照描述製作了一個ssh碼頭工具,然後使用「-link _mymongodocker_」參數運行它(併爲22端口映射,我一定很容易找到它)。然後在robomongo而不是localhost中使用mymongodocker(因爲它已鏈接,所以可以從ssh docker中獲得)。 工程就像一個魅力,即使 - 鏈接被棄用,應該由一個更現代的方法取代,時間beeing,我太懶了:) –

-3

在您的docker-compose文件中,您可以將端口暴露給主機。

例如,以下代碼會將機器內部的端口27017暴露給主機中的端口27018。

app: 
    image: node 
    volumes: 
    - /app 
    ports: 
    - "27018:27017" 

然後,如果你有泊塢窗機安裝和您的機器是默認,你可以在終端做:

docker-machine ip default 

它會給你你的主機的IP地址,例如192.168.2.3。您的數據庫(主機)的地址將爲192.168.2.3和端口。

如果你的碼頭工人的機器是不是虛擬的,是你的操作系統,數據庫的地址將是本地主機和端口。

+1

是haverchuck這是我做的,但它似乎對於robomongo它需要一些更多的配置:) – migorman

1

請注意,也許你將無法使用ssh,因爲這只是mongo和robomongo之間不兼容的問題。

'Robomongo v8.5及更低版本不支持MongoDB 3'。它與碼頭工人無關。

9

還有另一種方法。您可以

  1. SSH與Robomongo到您的實際虛擬服務器承載您的泊塢窗的應用程序(SSH選項卡,勾選「使用SSH隧道」,並相應完成其他字段)
  2. 現在ssh到同一臺機器在終端。
  3. docker ps應該向您顯示您的MongoDB容器。
  4. docker inspect <mongo container id>將打印出關於該容器的完整信息。最終尋找IPAddress,這將給你的容器的本地IP。
  5. 在Robomongo的「連接」選項卡中使用該容器IP進行連接。

另一個旁註:確保你不要暴露你的MongoDB服務端口以任何方式(無論Dockerfile也不泊塢窗-compose.yml),因爲那會使你的數據庫公開來自世界各地的訪問。假設您沒有爲該服務設置用戶名/密碼,您將很快被掃描並被黑客入侵。

+0

這是我唯一有效的答案,因爲我在雲服務器上,我肯定不會暴露我的數據庫端口或更改我的任何容器。謝謝! – Ben

+0

太棒了!謝謝,那爲我工作:) –