MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Impossibile connettere Mongodb a Springboot Container nella finestra mobile

Problema

Stai tentando di accedere al DB con IP/nome host errato. Come puoi vedere, accedendo a localhost nel contenitore di primavera si risolverebbe in quel contenitore e non c'è nessun 27017 porta in ascolto lì. Quando esegui il jar sull'host Docker, ha 27017 porta disponibile, ecco perché funziona.

Soluzione

Puoi usare --hostname flag in docker run comando per impostare il nome host del contenitore DB in modo che tu possa connetterti ad esso dal contenitore Spring utilizzando il nome host.

La soluzione migliore, tuttavia, è utilizzare un file di composizione mobile e avviare i contenitori utilizzando docker-compose up .

Prima di tutto usa

MongoClient mongo = new MongoClient("db", 27017));

nel tuo codice Spring e crea un'immagine del tuo codice.

Successivamente, segui i passaggi seguenti per avviare i contenitori:

A) Crea un file di composizione

Crea un file chiamato docker-compose.yml con i seguenti contenuti:

version: "2.1"
services:
  app:
    # replace imageName with your image name (block in your case)
    image: imageName:tag
    ports:
      - 9876:4000 # Replace the port of your application here if used
    depends_on: 
      - db
  db:
    image: mongo
    volumes:
      - ./database:/data
    ports:
      - "27017:27017"   

B) Esegui il file di composizione

Esegui il comando seguente per eseguire il file di composizione:docker-compose up -d