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

Kan ikke forbinde Mongodb til Springboot Container i docker

Problem

Du forsøger at få adgang til databasen med forkert IP/værtsnavn. Som du kan se, får du adgang til localhost i foråret ville containeren løse sig til den container, og der er ingen 27017 port lytter der. Når du kører jar på docker host, har den 27017 port tilgængelig, det er derfor det virker.

Løsning

Du kan bruge --hostname flag i docker run kommando for at indstille værtsnavnet på DB-beholderen, så du kan oprette forbindelse til den fra Spring-beholderen ved hjælp af værtsnavnet.

Den bedre løsning er dog at bruge en docker-compose-fil og starte containerne ved hjælp af docker-compose up .

Brug først og fremmest

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

i din Spring-kode og byg et billede af din kode.

Følg derefter nedenstående trin for at starte containerne:

A) Opret Compose-fil

Opret en fil med navnet docker-compose.yml med følgende indhold:

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 skrivefilen

Udfør følgende kommando for at køre compose-filen:docker-compose up -d




  1. Indsæt data i MongoDB ved hjælp af PHP

  2. NodeJS logger ud af alle brugersessioner

  3. Hvordan tillader man null-felt ved opdatering i Mongoose?

  4. Test af REST-ruter med curl --data, returnerer 404