2016-03-01 7 views
9

Sto utilizzando l'app NodeJS con docker-compose. Tutto funziona bene e posso vedere tutti i miei dati collegandomi a Mongo all'interno del container. Ma quando mi collego a RoboMongo non vedo alcun dato.connetti robomongo al contenitore docker mongoDB

Come posso risolvere questo problema?

+1

Puoi per favore condividere alcuni dettagli o probabilmente uno screenshot di quello che hai provato fino ad ora? –

+0

hey Siddharth Ajmera cerco semplicemente di vedere i miei dati usando robomongo ma non mostra nulla, mongoDB è in esecuzione all'interno di un contenitore mobile – migorman

+0

Riesci a vedere i tuoi database e le raccolte elencati in RoboMongo? –

risposta

2

È necessario eseguire una connessione del tunnel SSH di Robomongo a MongoDB all'interno del contenitore della finestra mobile. Prima di tutto dovresti installare un server ssh all'interno del tuo contenitore docker.

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


Dopo di che si dovrebbe configurare la connessione in Robomongo. All'interno di "Impostazioni di connessione" ci sono le schede di configurazione della tua connessione Robomongo.

Passare alla scheda "SSH" e configurare la connessione SSH al contenitore finestra mobile. Successivamente, vai alla scheda "Connessione" e configura la tua connessione a MongoDB come se fosse in ambito localhost.

+1

Grazie ancora André per il tuo aiuto :) funziona! – migorman

+0

Siete i benvenuti! –

+0

Non ha funzionato per me, quindi ho trovato una soluzione che è meglio allineata con la filosofia della finestra mobile: creato una finestra mobile ssh come descritto, quindi eseguirlo con un parametro '-link _mymongodocker_' (e una mappatura delle porte per 22 così i ' sono sicuro di trovarlo facilmente). Quindi in robomongo anziché localhost io uso mymongodocker (dato che è collegato, è disponibile dalla finestra mobile ssh). funziona come un fascino anche se --link è deprecato e dovrebbe essere sostituito da un approccio più moderno, per il momento sto, sono troppo pigro :) –

-3

Nel file di composizione docker, è possibile esporre una porta all'host.

Ad esempio, il codice seguente esporrà la porta 27017 all'interno della macchina alla porta 27018 nell'host.

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

Quindi, se avete finestra mobile macchina installato e la macchina è predefinita, si può fare in un terminale:

docker-machine ip default 

che vi darà l'ip del vostro ospite, ad esempio 192.168.2.3. L'indirizzo del tuo database (host) sarà 192.168.2.3 e la porta .

Se la macchina finestra mobile non è virtuale ed è il sistema operativo, l'indirizzo del database sarà localhost e il porto .

+1

sì haverchuck questo è quello che ho fatto ma sembra che per robomongo ha bisogno di altre configurazioni :) – migorman

1

Si prega di notare che forse non si sarà in grado di usare ssh perché era solo un problema di incompatibilità tra mongo e robomongo.

'Robomongo v8.5 e versioni precedenti non supporta MongoDB 3'. Non ha nulla a che fare con la finestra mobile.

9

C'è un altro modo. È possibile

  1. SSH con Robomongo nel vostro server virtuale reale che ospita le applicazioni della finestra mobile (scheda SSH, controllare "tunnel Usa SSH" e completare gli altri campi di conseguenza)
  2. Ora SSH nella stessa macchina nel vostro terminale .
  3. docker ps dovrebbe mostrarti il ​​tuo contenitore MongoDB.
  4. docker inspect <mongo container id> stampa informazioni complete su tale contenitore.Cerca IPAddress alla fine, che ti darà l'IP locale del contenitore.
  5. Nella scheda "Connessione" in Robomongo utilizzare l'IP del contenitore da connettere.

Un'altra nota a margine:Assicurarsi di non esporre le porte di servizio mongodb in qualsiasi modo (né Dockerfile né finestra mobile-compose.yml), causa che renderà la vostra base di dati pubblicamente accessibile da tutto il mondo. Supponendo che tu non abbia impostato un nome utente/password per quel servizio sarai presto scansionato e violato.

+0

Questa è l'unica risposta valida per me dato che sono su un server cloud e sicuramente non esporrai la porta del mio database o non modificherò nessuno dei miei contenitori. Grazie! – Ben

+0

Fantastico! grazie, questo lavoro per me :) –