2016-09-23 15 views
0

Ich habe eine Nginx Routing zu zwei App-Container.Docker Container verknüpfen

Ich habe eine Login-Anwendung in einem der Behälter laufen - account.myproduct.local

Meine andere Anwendung ist in einem anderen Behälter läuft - calendar.myproduct.local

Wenn eine Anfrage gemacht wird, calendar.practo.local es macht eine OpenID auth Umleitung

Problem account.myproduct.local: ich habe die Behälter verbunden, aber da account.myproduct.local ist nicht auflösbar aus dem Kalender Behälter (cale ndar.myproduct.local), die Anmeldung findet nicht statt. Wie soll ich es auflösbar machen?

Antwort

0

Sie können den Befehl link verwenden, um der Datei/etc/hosts von calendar.myproduct.local einen Alias ​​hinzuzufügen. Ihr Link auf Kalender würde so aussehen:

--link account_container_name:account.myproduct.local

Auf diese Weise calendar.myproduct.local in der Lage, die Hostnamen account.myproduct.local zu lösen, ohne seine IP kennen.

+0

account.myproduct.local wird durch Proxing durch Nginx-Container aufgelöst. Sollte ich in diesem Fall nginx verknüpfen, wird es dann funktionieren? '--link nginx: account.myproduct.local'. Auch ich hörte mit docker1.9 Links sind veraltet und docker hat sein eigenes Netzwerk, das verwendet werden sollte. Wie benutzt man das? –

+0

Hinzufügen von Links mit Punkt in es funktioniert nicht! services.calendar.links enthält einen ungültigen Typ, es sollte eine Zeichenfolge sein services.accounts.links enthält einen ungültigen Typ, es sollte eine Zeichenfolge sein –

+0

Github-Code dafür - https://github.com/alok87/dockerex –

0

Gelöst Mit Docker Version 1.10 und höher. Es ist nicht erforderlich, Container als docker zu verknüpfen. Compose erstellt ein Standardnetzwerk, und alle Dienste können anhand des Containernamens erkannt werden. Das Ändern des Dienstnamens in den Nginx-Servernamen löste das Problem für mich.

Jetzt accounts.myproduct.local und calendar.myproduct.local sind von außen auflösbare (coz of the /etc/hosts in my mac) und auch intern auflösbare für Kommunikation (using the service name which is resolvable in the same network)

Detail mit gutem Beispiel:https://github.com/alok87/dockerex

New Docker -kompendierte Datei:

version: '2' 

services: 
    accounts.myproduct.local: 
    build: accounts 

    calendar.myproduct.local: 
    build: calendar 

    router: 
    build: router 
    ports: 
    - 80:80