it-swarm.com.de

Stellen Sie über Docker-Container eine Verbindung zum Host mongodb her

Ich möchte also eine Verbindung zu meinem Mongodb herstellen, der auf meinem Host-Computer (DO-Droplet, Ubuntu 16.04) läuft. Es wird auf dem Standardport 27017 auf localhost ausgeführt.

Ich verwende dann mup , um meine Meteor-App auf meinem DO-Droplet bereitzustellen, das Docker verwendet, um meine Meteor-App in einem Container auszuführen. So weit so gut. Eine Standard-mongodb://...-Verbindungs-URL wird verwendet, um die App mit dem mongodb. Zu verbinden. Jetzt habe ich folgendes Problem:

mongodb://[email protected]:27017... funktioniert offensichtlich nicht innerhalb des Docker-Containers, da localhost nicht der localhost des Hosts ist.

Ich habe bereits viele Stackoverflow-Beiträge dazu gelesen, die ich bereits ausprobiert habe:

  • --network="Host" - hat nicht funktioniert, da 0.0.0.0:80 bereits verwendet wird oder so ähnlich (nginx-Proxy)
  • --add-Host="local:<MY-DROPLET-INTERNET-IP>" und Verbindung über mongodb://[email protected]:27017...: funktioniert auch nicht, da ich nur von localhost auf meine mongodb zugreifen kann, nicht von der öffentlichen IP

Das muss ein allgemeines Problem sein!

tl; dr - Wie kann ich die Hosts localhost in einem Docker-Container offenlegen, damit ich eine Verbindung zu den auf dem Host laufenden Diensten herstellen kann? (einschließlich ihrer Ports, z. B. 27017).

Ich hoffe jemand kann helfen!

7
Patrick DaVader

Sie können Folgendes verwenden: 172.17.0.1, da dies die Standard-Host-IP ist, die die Container sehen können. Sie müssen jedoch Mongo so konfigurieren, dass 0.0.0.0 gehört wird.

Ab Docker 18.03 die Empfehlung soll eine Verbindung zum speziellen DNS-Namen Host.docker.internal hergestellt werden

Für frühere Versionen können Sie die DNS-Namen docker.for.mac.localhost oder docker.for.windows.localhost verwenden.

17
Robert

Ändern Sie in /etc/mongod.conf das bindIp von 127.0.0.1 auf 0.0.0.0. Dann wird es klappen

0
Siva S