EDIT:
Jag har aldrig gjort spring-boot-utveckling, men felet som du säger visas kan mycket väl inte vara relaterat till mongo-problemet. Men här är en förklaring till varför din mongo-anslutning misslyckas:
docker-compose
skapar ett virtuellt nätverk om ett sådant inte har specificerats i filen (som i ditt fall).
Alla dina applikationer körs inuti detta nätverk, helt isolerade från varandra. Som sådan, localhost
i din fjäderstövelbehållare hänvisar faktiskt till sig själv. Det betyder att din spring-boot-applikation förväntar sig mongo
instans som körs inuti sin behållare (vilket inte är det, den är i en annan behållare).
Detta skulle ha varit bra när både databasen och programmet kördes på din bärbara dators nätverk. Men som sagt, de körs nu i docker-compose
nätverk, helt isolerat.
Men docker-compose
är riktigt smart! Den skapar en DNS för var och en av dina behållare som använder tjänstens namn (i ditt fall mongo
och spring
) som anges i din docker-compose
fil för att möjliggöra enkel åtkomst till behållarna inuti nätverket.
Så du bör kunna ändra spring.data.mongodb.uri=mongodb://localhost:27017/db
till spring.data.mongodb.uri=mongodb://mongo:27017/db
och det borde göra det möjligt för den att ansluta.