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.