EDIT:
Jeg har aldrig lavet spring-boot-udvikling, men den fejl, du siger, vises, kan meget vel være uden forbindelse med mongo-problemet. Men her er en forklaring på hvorfor din mongo-forbindelse fejler:
docker-compose
opretter et virtuelt netværk, hvis et ikke er angivet i filen (som i dit tilfælde).
Alle dine applikationer kører inde i dette netværk, fuldstændig isoleret fra hinanden. Som sådan localhost
i din spring-boot container refererer faktisk til sig selv. Det betyder, at din spring-boot-applikation forventer mongo
forekomst til at køre inde i sin container (hvilket ikke er, den er i en anden container).
Dette ville have været fint, når både databasen og programmet kørte på din bærbare computers netværk. Men som nævnt kører de nu i docker-compose
netværk, fuldstændig isoleret.
Dog docker-compose
er virkelig smart! Det opretter en DNS for hver af dine containere, som bruger servicenavnet (i dit tilfælde mongo
og spring
) angivet i din docker-compose
fil for at give nem adgang til beholderne inde i netværket.
Så du burde være i stand til at ændre spring.data.mongodb.uri=mongodb://localhost:27017/db
til spring.data.mongodb.uri=mongodb://mongo:27017/db
og det skulle give den mulighed for at forbinde.