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