2016-03-01 16 views
9

Używam aplikacji NodeJS z docker-compose. Wszystko działa dobrze i mogę zobaczyć wszystkie moje dane, łącząc się z Mongo wewnątrz kontenera. Ale kiedy łączę się z RoboMongo, nie widzę żadnych danych.Połącz robomongo z kontenerem dokowania mongoDB

Jak mogę sobie z tym poradzić?

+1

Czy możesz podzielić się niektórymi szczegółami lub prawdopodobnie zrzutem ekranu z tego, co dotychczas wypróbowałeś? –

+0

Hej Siddharth Ajmera Po prostu próbuję zobaczyć moje dane za pomocą robomongo, ale nic nie pokazuje, mongoDB działa w kontenerze dokowania – migorman

+0

Czy widzisz swoje bazy danych i kolekcje w RoboMongo? –

Odpowiedz

2

Powinieneś wykonać połączenie tunelu SSH Robomongo z MongoDB wewnątrz kontenera w doku. Przede wszystkim powinieneś zainstalować serwer ssh wewnątrz swojego kontenera w doku.

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


Następnie należy skonfigurować połączenie w Robomongo. Wewnątrz "Ustawienia połączeń" znajdują się zakładki konfiguracji połączenia Robomongo.

Przejdź do zakładki "SSH" i skonfiguruj połączenie SSH z kontenerem w doku. Następnie przejdź do zakładki "Connection" i skonfiguruj połączenie z MongoDB tak, jakby był w zasięgu localhost.

+1

Jeszcze raz dziękuję André za pomoc :) działa! – migorman

+0

Nie ma za co! –

+0

Nie działa dla mnie, więc znalazłem obejście, które jest lepiej dostosowane do filozofii dockera: utworzono okno dokowane SSH zgodnie z opisem, następnie uruchomiłem je za pomocą parametru '-link _mymongodocker_' (i mapowania portów dla 22, więc i ' na pewno go łatwo znajdę). Następnie w robomongo zamiast localhost używam mymongodocker (ponieważ jest połączony, jest dostępny z dockera ssh). Działa jak urok, nawet jeśli --link jest przestarzałe i powinno być zastąpione przez bardziej nowoczesne podejście, na czas, jestem zbyt leniwy :) –

-3

W pliku do tworzenia dokerów można udostępnić hostowi port.

Na przykład poniższy kod spowoduje wystawienie portu 27017 wewnątrz urządzenia na port 27018 na hoście.

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

Następnie, jeśli masz doker automatyczna zainstalowane i urządzenie jest domyślny, można to zrobić w terminalu:

docker-machine ip default 

To daje IP hosta, na przykład 192.168.2.3. Adres bazy danych (hosta) będzie 192.168.2.3 i port .

Jeśli urządzenie doker nie jest wirtualny i jest system operacyjny, adres bazy danych będzie localhost i port .

+1

tak haverchuck to jest to, co zrobiłem, ale wydaje się, że dla robomongo to potrzebuje trochę więcej konfiguracji :) – migorman

1

Należy pamiętać, że być może nie będziesz mógł używać ssh, ponieważ jest to tylko problem niezgodności między Mongo i Robomongo.

'Robomongo v8.5 and lower nie obsługuje MongoDB 3'. Nie ma nic wspólnego z dokowaniem.

9

Istnieje inny sposób. Można

  1. SSH z Robomongo do rzeczywistego serwera wirtualnego, który obsługuje aplikacje Döcker (zakładka SSH, zaznacz opcję „Użyj SSH tunel” i wypełnić pozostałe pola odpowiednio)
  2. Teraz ssh na tym samym komputerze w terminalu .
  3. docker ps powinien pokazać ci swój kontener MongoDB.
  4. docker inspect <mongo container id> wydrukuje pełne informacje o tym kontenerze.Poszukaj w końcu IPAddress, która da ci lokalny adres IP kontenera.
  5. W zakładce "Połączenie" w Robomongo użyj tego adresu IP kontenera, aby się połączyć.

Innym sidenote:Upewnij się, że nie narażać swoich portów usług MongoDB w jakikolwiek sposób (ani Dockerfile ani doker-compose.yml), bo to sprawi, że otwarcie bazy danych dostępne z wszędzie. Zakładając, że nie masz skonfigurowanej nazwy użytkownika/hasła do tej usługi, zostaniesz wkrótce zeskanowany i zhakowany.

+0

To jedyna poprawna odpowiedź dla mnie, ponieważ jestem na serwerze w chmurze i na pewno nie wystawię swojego portu bazy danych ani nie zmieni żadnego z moich kontenerów. Dziękuję Ci! – Ben

+0

Awesome! dzięki, to dla mnie działa :) –