EDITAR:
Eu nunca fiz desenvolvimento de inicialização por mola, mas o erro que você está dizendo que está sendo exibido pode muito bem não estar relacionado ao problema do mongo. No entanto, aqui está uma explicação de por que sua conexão mongo está falhando:
docker-compose
cria uma rede virtual se não tiver sido especificada no arquivo (como no seu caso). Todos os seus aplicativos são executados dentro dessa rede, completamente isolados uns dos outros. Assim,
localhost
em seu contêiner spring-boot, na verdade, se refere a si mesmo. Significando que seu aplicativo spring-boot está esperando o mongo
instância esteja sendo executada dentro de seu contêiner (o que não é, está em um contêiner diferente). Isso teria sido bom quando o banco de dados e o aplicativo estivessem sendo executados na rede do seu laptop. Mas, como mencionado, eles agora estão sendo executados no
docker-compose
rede, em completo isolamento. No entanto,
docker-compose
é muito inteligente! Ele cria um DNS para cada um de seus contêineres que usa o nome do serviço (no seu caso mongo
e spring
) especificado em seu docker-compose
para permitir acesso fácil aos contêineres dentro da rede. Portanto, você deve poder alterar
spring.data.mongodb.uri=mongodb://localhost:27017/db
para spring.data.mongodb.uri=mongodb://mongo:27017/db
e isso deve permitir que ele se conecte.