EDITAR:
Nunca he realizado un desarrollo de arranque de primavera, pero el error que dice que se muestra puede no estar relacionado con el problema de mongo. Sin embargo, aquí hay una explicación de por qué está fallando su conexión mongo:
docker-compose
crea una red virtual si no se ha especificado una en el archivo (como en su caso).
Todas sus aplicaciones se ejecutan dentro de esta red, completamente aisladas entre sí. Como tal, localhost
en su contenedor spring-boot en realidad se refiere a sí mismo. Lo que significa que su aplicación Spring-Boot está esperando el mongo
instancia se ejecute dentro de su contenedor (lo cual no es así, está en un contenedor diferente).
Esto habría estado bien cuando tanto la base de datos como la aplicación se estaban ejecutando en la red de su computadora portátil. Pero como se mencionó, ahora se ejecutan en docker-compose
red, en completo aislamiento.
Sin embargo, docker-compose
es realmente inteligente! Crea un DNS para cada uno de sus contenedores que usa el nombre del servicio (en su caso, mongo
y spring
) especificado en su docker-compose
para permitir un fácil acceso a los contenedores dentro de la red.
Por lo tanto, debería poder cambiar spring.data.mongodb.uri=mongodb://localhost:27017/db
a spring.data.mongodb.uri=mongodb://mongo:27017/db
y eso debería permitir que se conecte.