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