2017-01-01 8 views
1

Ich benutze docker-compose, um einige Dienste innerhalb des Docker-Containers zu starten. Einige der anderen Dienste wie der mongodb werden auf dem Rechner des Hosts und nicht im Andock-Container ausgeführt. Ich muss mit mongodb von innerhalb des Dockerbehälters verbinden.Greife auf die Host-IP im Docker-Container zu, indem du docker-compose verwendest

Wie kann ich dies mit docker-compose erreichen?

+0

können Sie erarbeiten? Fügen Sie Ihre .yml-Dateien mindestens – user2915097

+0

hinzu Ich habe eine sehr einfache Kompositionsdatei Hier ist die YML-Datei mit nur einem Dienst, der darin läuft. Dieser Dienst muss auf den mongodb-Server zugreifen, der auf einem anderen Server gehostet wird. 'Version: '2' Dienstleistungen: Benutzer-Management-Service: Bild: Benutzer-Management-Service container_name: Usermanagement Ports: - "8091: 8091" ' – krajwade

Antwort

1

Ich schätze, es gibt einen Weg, dies zu erreichen, aber das ist eine wirklich schlechte Übung. Sie möchten Ihren Host von Ihren Containern isolieren. Die Container können vom Design her nicht auf den Host zugreifen, und Sie sollten dies nicht umgehen.

Die beste Vorgehensweise wäre ein Mongodb-Container, der auf demselben Host Ihres App-Containers ausgeführt wird und diese miteinander verbindet, sodass sie miteinander kommunizieren können.

+0

In einigen Fällen I hat möglicherweise keinen direkten Zugriff auf die Datenbank. Es könnte auf dem Client-Rechner installiert sein und ich habe nur Lesezugriff. – krajwade

+0

Ich sehe nicht, wie das ändert, was ich geschrieben habe. Die Zusammenarbeit Ihrer App und db ist auch eine schlechte Praxis (wenn Sie den Fall richtig beschrieben haben) –

+0

Was ich meine ist zu sagen, dass, da die Datenbank (mongodb) von den Clients verwaltet wird, sie nicht in einem Container (Docker). Sie laufen direkt auf dem Host-Rechner und ich muss mich mit der öffentlichen IP verbinden. – krajwade

Verwandte Themen