sql >> Database >  >> NoSQL >> MongoDB

Kan Mongodb niet verbinden met Springboot Container in docker

Probleem

U probeert toegang te krijgen tot de database met een verkeerde IP/hostnaam. Zoals je kunt zien, toegang krijgen tot localhost in de veercontainer zou naar die container gaan en er is geen 27017 haven die daar luistert. Wanneer u de jar op docker-host uitvoert, heeft deze 27017 poort beschikbaar, daarom werkt het.

Oplossing

U kunt --hostname . gebruiken vlag in docker run opdracht om de hostnaam van de DB-container in te stellen, zodat u er vanuit de Spring-container verbinding mee kunt maken met behulp van de hostnaam.

De betere oplossing is echter om een ​​docker-compose-bestand te gebruiken en de containers te starten met docker-compose up .

Gebruik eerst

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

in je Spring-code en maak een afbeelding van je code.

Volg daarna de onderstaande stappen om de containers te starten:

A) Maak een Compose-bestand

Maak een bestand met de naam docker-compose.yml met de volgende inhoud:

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) Voer het opstelbestand uit

Voer de volgende opdracht uit om het opstelbestand uit te voeren:docker-compose up -d




  1. Documenten filteren op afstand opgeslagen in document met $near

  2. MongoDB-melding in Python

  3. zoeken op ObjectId in mongodb met pymongo

  4. plukken versus onderscheiden in mongoïde db. welke is sneller?