MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

SpringBoot in Docker verbindet sich nicht mit Mongo in Docker

BEARBEITEN:

Ich habe noch nie eine Spring-Boot-Entwicklung durchgeführt, aber der Fehler, von dem Sie sagen, dass er angezeigt wird, hat möglicherweise nichts mit dem Mongo-Problem zu tun. Hier ist jedoch eine Erklärung, warum Ihre Mongo-Verbindung fehlschlägt:

docker-compose erstellt ein virtuelles Netzwerk, wenn eines nicht in der Datei angegeben wurde (wie in Ihrem Fall).

Alle Ihre Anwendungen laufen innerhalb dieses Netzwerks, vollständig voneinander isoliert. Also localhost in Ihrem Spring-Boot-Container bezieht sich tatsächlich auf sich selbst. Das bedeutet, dass Ihre Spring-Boot-Anwendung den mongo erwartet Instanz innerhalb ihres Containers laufen soll (was nicht der Fall ist, sie befindet sich in einem anderen Container).

Dies wäre in Ordnung gewesen, wenn sowohl die Datenbank als auch die Anwendung im Netzwerk Ihres Laptops ausgeführt wurden. Aber wie erwähnt laufen sie jetzt im docker-compose Netzwerk, in vollständiger Isolation.

Allerdings docker-compose ist wirklich clever! Es erstellt für jeden Ihrer Container ein DNS, das den Dienstnamen verwendet (in Ihrem Fall mongo und spring ), die in Ihrem docker-compose angegeben sind Datei, um einen einfachen Zugriff auf die Container innerhalb des Netzwerks zu ermöglichen.

Sie sollten also in der Lage sein, spring.data.mongodb.uri=mongodb://localhost:27017/db zu ändern zu spring.data.mongodb.uri=mongodb://mongo:27017/db und das sollte es ermöglichen, sich zu verbinden.