BEWERKEN:
Ik heb nog nooit spring-boot-ontwikkeling gedaan, maar de fout die u zegt te worden weergegeven, heeft mogelijk niets te maken met het mongo-probleem. Hier is echter een verklaring waarom uw mongo-verbinding faalt:
docker-compose
maakt een virtueel netwerk aan als er geen is opgegeven in het bestand (zoals in uw geval).
Al uw applicaties draaien binnen dit netwerk, volledig geïsoleerd van elkaar. Als zodanig, localhost
in je spring-boot container verwijst eigenlijk naar zichzelf. Dit betekent dat je spring-boot-applicatie de mongo
. verwacht instantie om binnen zijn container te draaien (wat niet het geval is, het is in een andere container).
Dit zou prima zijn geweest als zowel de database als de applicatie op het netwerk van uw laptop draaiden. Maar zoals vermeld, draaien ze nu in de docker-compose
netwerk, volledig geïsoleerd.
Echter, docker-compose
is echt slim! Het creëert een DNS voor elk van uw containers die de servicenaam gebruikt (in uw geval mongo
en spring
) opgegeven in uw docker-compose
bestand om gemakkelijke toegang tot de containers in het netwerk mogelijk te maken.
U zou dus spring.data.mongodb.uri=mongodb://localhost:27017/db
moeten kunnen wijzigen naar spring.data.mongodb.uri=mongodb://mongo:27017/db
en dat zou het mogelijk moeten maken om verbinding te maken.