2015-06-12 22 views
7

Ich habe ein Docker compose Aufbau einer Datenbank-Container, einem Applikationsbehälter und einem Behälter, der die Datenbank mit den erforderlichen Daten vorab geladen wird.Docker Compose mit einem Abschluss Container

Ich möchte alle Container zusammen mit docker-compose up starten, während der Vorladecontainer beendet wird, nachdem es mit exit 0 funktioniert hat.

Aber beendet diesen einen Behälter nimmt mit der Meldung das komplette Setup herunter:

composesetup_load_1 exited with code 0 
Gracefully stopping... (press Ctrl+C again to force) 
Stopping composesetup_app_1... 
Stopping composesetup_db_1... 

Gibt es eine Möglichkeit, mehrere Behälter mit unterschiedlichen Lebenszeit in einer Docker-compose Setup zu haben? Wenn ja, wie?

Antwort

4

für jetzt meine Abhilfe ist durch Hinzufügen tail -f /dev/null bis zum Ende des Einstiegspunktes Skript die Vorbelastung Container am Laufen zu halten. Dies hält den Prozess am laufen, während nichts wirklich passiert.

+0

glatt bewegen, Alter. – Neil

+0

Ist das eine übliche Methode, um so etwas zu tun? Gibt es einen "richtigen"/"offiziellen" Weg, dies zu tun? Ich liebe diese glatte Lösung in jedem Fall. – IcyFlame

0

Mit -d option bei docker-compose up -d wird den Prozess in frei stehenden Modus ausgeführt werden. Dies vermeidet die Notwendigkeit, den Dienst mit Strg + C zu beenden und daher die Container zu stoppen.

Anmerkung: Ich bin asumming Sie den Prozess mit Strg + C aus der Meldung „Gracefully stopping... (press Ctrl+C again to force)“ getötet geteilt Sie.

+1

Nein, ich habe den Prozess mit Strg + C nicht beendet ist der Prozess abgeschlossen gerade seine Arbeit und endet somit mit 'exit 0 '. Das Ausführen von docker-compose mit der Option "-d" ist keine Lösung. –

+1

@white_gecko, ok, danke für die Klärung. Das Verhalten ist dann so, als wäre das Flag '--abort-on-container-exit' gesetzt? – atfornes

+1

Ok, vielleicht ist dieser Flag eine Lösung ... wenn ich die Frage zumindest dieses Verhalten Standard war gepostet habe. –