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ć.