/Ich bin mit Docker Beta auf einem Mac einer hat einige Dienste in service-a/docker-compose.yml
einzurichten:Zugang Host-Maschine dns von einem Docker Behälter
version: '2'
services:
service-a:
# ...
ports:
- '4000:80'
ich dann folgend in /etc/hosts
eingerichtet:
::1 service-a.here
127.0.0.1 service-a.here
und ich habe einen nginx
Server, der diese Proxies service-a.here
zu localhost:4000
läuft. Also auf meinem Mac kann ich einfach laufen: curl http://service-a.here
. Das alles funktioniert gut.
Nun, ich baue einen anderen Dienst, service-b/docker-compose.yml
:
version: '2'
services:
service-b:
# ...
ports:
- '4001:80'
environment:
SERVICE_A_URL: service-a.here
service-b
Bedürfnisse service-a
für ein paar Dinge:
- es den Benutzer im Browser auf die
$SERVICE_A_URL
umleiten muss - Er muss HTTP-Anforderungen an
service-a
ausführen, auch unter Verwendung der$SERVICE_A_URL
Mit diesem Setup funktioniert nur die Umleitung (1.). HTTP-Anfragen (2.) funktionieren nicht, weil der service-b
Container keine Ahnung von service-a.here
in seinem DNS hat.
Ich habe versucht, service-a.here
mit der add_hosts
Konfigurationsvariable hinzuzufügen, aber ich bin nicht wund, was es zu setzen. localhost
wird natürlich nicht funktionieren.
Beachten Sie, dass ich die docker-compose-Dateien wirklich getrennt halten möchte (das Zusammenfügen würde mein Problem übrigens nicht beheben), weil beide bereits viele Dienste in ihnen ausgeführt haben.
Gibt es eine Möglichkeit, Zugriff auf die DNS-Auflösung auf localhost von innerhalb eines Docker-Container zu haben, so dass zum Beispiel curl service-a.here
aus einem Container funktioniert?
Das funktioniert! Für eine 'docker-compose.yml' Datei. Nicht für mehrere 'docker-compose.yml's. – romeovs
Ich denke, ich muss auf 'externe_links' zurückgreifen, dann: / – romeovs