EDYCJA:
Nigdy nie zajmowałem się tworzeniem wiosennego rozruchu, ale wyświetlany błąd może być niezwiązany z problemem mongo. Oto jednak wyjaśnienie, dlaczego połączenie mongo nie działa:
docker-compose tworzy sieć wirtualną, jeśli nie została określona w pliku (jak w twoim przypadku).
Wszystkie Twoje aplikacje działają w tej sieci, całkowicie odizolowane od siebie. W związku z tym localhost w twoim wiosennym pojemniku na buty faktycznie odnosi się do siebie. Oznacza to, że Twoja aplikacja spring-boot oczekuje mongo instancja uruchomiona wewnątrz swojego kontenera (co nie jest, znajduje się w innym kontenerze).
Byłoby to w porządku, gdyby zarówno baza danych, jak i aplikacja działały w sieci laptopa. Ale jak wspomniano, teraz działają w docker-compose sieci, w całkowitej izolacji.
Jednak docker-compose jest naprawdę sprytny! Tworzy DNS dla każdego z twoich kontenerów, który używa nazwy usługi (w twoim przypadku mongo i spring ) określone w Twoim docker-compose plik umożliwiający łatwy dostęp do kontenerów wewnątrz sieci.
Więc powinieneś być w stanie zmienić spring.data.mongodb.uri=mongodb://localhost:27017/db do spring.data.mongodb.uri=mongodb://mongo:27017/db i to powinno pozwolić mu się połączyć.