So weisen Sie Container im Andockfenster Domänennamen zu

8

Ich lese in diesen Tagen viel darüber, wie man einen Docker-Stack einrichtet und ausführt. Aber eines der Dinge, die ich immer verpasse, ist, wie man bestimmte Container so konfiguriert, dass sie auf den Zugriff über ihren Domain-Namen und nicht nur über ihren Container-Namen mit docker dns antworten.

Was ich meine, ist, dass ich einen Microservice habe, der extern zugänglich ist, zum Beispiel: users.mycompany.com, er wird durch den Microservice-Container gehen, der die Benutzer api behandelt

Wenn ich dann versuche, auf customer-list.mycompany.com zuzugreifen, wird es zum Microservice-Container weitergeleitet, der die Kundenlisten bearbeitet

Natürlich kann ich mit docker dns auf sie zugreifen und sie mit einem Docker-Netzwerk verbinden, aber das funktioniert nur, wenn ich auf container zu container zugreifen möchte, aber nicht internet zu container.

Weiß jemand, wie ich das machen soll? Oder der beste Weg, das einzurichten.

    
Christopher Thomas 29.11.2016, 13:58
quelle

2 Antworten

9

Sie müssen also das Konzept der Portveröffentlichung verwenden, damit ein Port von Ihrem Container über einen Port von Ihrem Host aus zugänglich ist. Mit diesem können Sie einen einfachen proxy_pass von einem nginx einrichten, der users.mycompany.com zu myhost: 1337 umleitet ( vorausgesetzt, dass Sie Ihren Port auf 1337 veröffentlicht haben )

Wenn Sie dies tun möchten, müssen Sie Ihren Container so einrichten, dass er einen bestimmten Port freigibt:

%Vor%

Sie können dann von Ihrem Host Ihren localhost: 5000 curlen, um auf den Container zuzugreifen.

%Vor%

Wenn Sie einen Domainnamen im Vordergrund einrichten möchten, benötigen Sie eine Webserver-Instanz, mit der Sie Ihren Hostnamen in Ihren Container proxy_pass übernehmen können.

d. in nginx:

%Vor%

Ich würde Ihnen raten, dieses Tutorial zu befolgen > und überprüfen Sie möglicherweise die Andocklauf-Referenz

    
MagicMicky 29.11.2016, 15:44
quelle
0

Soweit ich weiß, bietet Docker diese Funktion nicht standardmäßig an. Aber sicherlich gibt es hier einige Problemumgehungen. In der Tat müssen Sie einen DNS auf Ihrem Host bereitstellen, der die Container unterscheidet und ihre Domänennamen in dynamischen IPs auflöst. Du könntest also versuchen:

  1. Stellen Sie einige Docker-bewusste DNS-Lösungen bereit (ich empfehle Ihnen, SkyDNSv1 / SkyDock zu verwenden);

  2. Konfigurieren Sie Ihren Host so, dass er mit diesem DNS arbeitet (standardmäßig teilt SkyDNS die Container einander über den Namen mit, aber der Host weiß nichts davon);

  3. Führen Sie Ihre Container mit dem expliziten --hostname aus (Sie verwenden wahrscheinlich das Schema container_name.image_name.dev.skydns.local)

Sie können Schritt 2 überspringen und Ihren Browser auch innerhalb des Containers ausführen: Er wird den Webanwendungscontainer nach Hostnamen erkennen.

    
K.Martin 30.11.2016 11:45
quelle

Tags und Links