sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan inte ansluta Mongodb till Springboot Container i docker

Problem

Du försöker komma åt DB med fel IP/värdnamn. Som du kan se, åtkomst till localhost i våren skulle behållaren lösas till den behållaren och det finns ingen 27017 hamn lyssnar där. När du kör jar på docker-värden har den 27017 port tillgänglig, det är därför det fungerar.

Lösning

Du kan använda --hostname flagga i docker run kommando för att ställa in värdnamnet för DB-behållaren så att du kan ansluta till den från Spring-behållaren med värdnamnet.

Den bättre lösningen är dock att använda en docker-compose-fil och starta behållarna med docker-compose up .

Använd först och främst

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

i din Spring-kod och skapa en bild av din kod.

Följ sedan stegen nedan för att starta behållarna:

A) Skapa Compose-fil

Skapa en fil med namnet docker-compose.yml med följande innehåll:

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) Kör skrivfilen

Kör följande kommando för att köra compose-filen:docker-compose up -d




  1. Så här gör du:Använd Apache HBase REST-gränssnitt, del 1

  2. Hur grupperar jag en fråga med flera $cond?

  3. Sortera en kapslad array i mongoose

  4. Aggregation med uppdatering i mongoDB