2016-07-28 10 views
0

Ist es möglich, den Start eines Containers basierend auf der Verfügbarkeit eines separaten HTTP-Dienstes zu verschieben. Starten Sie den Container beispielsweise nur, wenn Port 8080 ausgeführt wird?Docker Compose Abhängigkeiten

+0

Docker 1.12 führt [HEALTHCHECK] ein (https://docs.docker.com/engine/reference/builder/#/healthcheck), aber das fehlende Stück ist 'docker-compose', muss sich dessen bewusst sein und als nächstes beginnen Service, wenn der Healthcheck bestanden hat. Es gibt ein offenes Problem, das Sie überprüfen sollten: https://github.com/docker/compose/issues/374 – huygn

Antwort

1

Diese Art der Service-Prüfung auf Anwendungsebene ist in docker-compose nicht verfügbar. Sie müssten die erforderliche Logik in Ihren Docker-Images implementieren.

Zum Beispiel, wenn Sie etwas, das auf einem Web-Dienst abhängig ist, könnten Sie Ihre CMD Lauf ein Skript, das etwas tut, wie:

while ! curl -sf http://servicehost:8080/; do 
    sleep 1 
done 

exec myprogram 

Eine weitere Option ist ein Neustart Politik der always auf einstellen Container und lassen sie fehlschlagen, wenn der Zieldienst nicht verfügbar ist. Docker wird den Container so lange neu starten, bis er weiter läuft.