MODIFIER :
Je n'ai jamais fait de développement spring-boot, mais l'erreur que vous dites est affichée peut très bien être sans rapport avec le problème mongo. Cependant, voici une explication de la raison pour laquelle votre connexion mongo échoue :
docker-compose
crée un réseau virtuel si aucun n'a été spécifié dans le fichier (comme dans votre cas).
Toutes vos applications s'exécutent à l'intérieur de ce réseau, complètement isolées les unes des autres. En tant que tel, localhost
dans votre conteneur spring-boot se réfère en fait à lui-même. Cela signifie que votre application spring-boot attend le mongo
instance à exécuter à l'intérieur de son conteneur (ce qui n'est pas le cas, elle se trouve dans un conteneur différent).
Cela aurait été bien lorsque la base de données et l'application s'exécutaient sur le réseau de votre ordinateur portable. Mais comme mentionné, ils s'exécutent maintenant dans le docker-compose
réseau, dans un isolement complet.
Cependant, docker-compose
est vraiment astucieux ! Il crée un DNS pour chacun de vos conteneurs qui utilise le nom du service (dans votre cas mongo
et spring
) spécifié dans votre docker-compose
fichier pour permettre un accès facile aux conteneurs à l'intérieur du réseau.
Donc, vous devriez pouvoir changer spring.data.mongodb.uri=mongodb://localhost:27017/db
à spring.data.mongodb.uri=mongodb://mongo:27017/db
et cela devrait lui permettre de se connecter.