EDIT:
Saya belum pernah melakukan pengembangan spring-boot, tetapi kesalahan yang Anda katakan sedang ditampilkan mungkin sangat tidak terkait dengan masalah mongo. Namun, berikut adalah penjelasan mengapa koneksi mongo Anda gagal:
docker-compose membuat jaringan virtual jika belum ditentukan dalam file (seperti dalam kasus Anda).
Semua aplikasi Anda berjalan di dalam jaringan ini, sepenuhnya terisolasi satu sama lain. Dengan demikian, localhost di wadah spring-boot Anda sebenarnya mengacu pada dirinya sendiri. Artinya aplikasi spring-boot Anda mengharapkan mongo instance untuk dijalankan di dalam wadahnya (yang bukan, itu dalam wadah yang berbeda).
Ini akan baik-baik saja ketika database dan aplikasi berjalan di jaringan laptop Anda. Tetapi seperti yang disebutkan, mereka sekarang berjalan di docker-compose jaringan, dalam isolasi penuh.
Namun, docker-compose benar-benar pintar! Itu membuat DNS untuk setiap wadah Anda yang menggunakan nama layanan (dalam kasus Anda mongo dan spring ) yang ditentukan dalam docker-compose . Anda file untuk memungkinkan akses mudah ke wadah di dalam jaringan.
Jadi, Anda harus dapat mengubah spring.data.mongodb.uri=mongodb://localhost:27017/db ke spring.data.mongodb.uri=mongodb://mongo:27017/db dan itu harus memungkinkannya untuk terhubung.