2016-07-05 7 views
0

Ich habe ein Problem mit Docker und Redirect interne Konsole Ausgabe in die Protokolldatei und ich weiß nicht, wie kann ich umgehen es. In Docker compose laufen folgende I BefehlDocker führen mehrere Befehle, T-Stück zu Protokolldatei, und fehlende SIGTERM

bash -c "./redis-server redis.conf | tee -ai /redis.log" 

Alles ist in Ordnung, außer dass redis nicht erhalten SIGTERM an "Docker-compose stop". Es hängt für 10 Sekunden und nach diesem Docker wahrscheinlich SIGKILL senden. Wenn ich einfach Init-Skripte aus diesem Urls: Krallin tini

oder Yelp dumb-init

Docker stoppen, bevor 10s Timeout, aber redis noch nicht erhalten SIGTERM und nicht dump.rdb Datei erstellen. Vielleicht kann jemand helfen?

Antwort

0

Das Standard-Timeout beträgt 10 Sekunden. Sie können das mit dem Argument -t senken. Hast du es auch ohne "Tee" versucht? Docker funktioniert "am besten", wenn ein einzelner Prozess ausgeführt wird, und der -i tee arg (Ignore SIGINT-Signal) kann ebenfalls den Shutdown-Prozess beeinträchtigen.

+0

Der Befehl kann auch bash -c "./redis-server redis.conf> /redis.log" sein. Es hängt immer noch, und docker Container nach Timeout zu töten. Ich möchte nur auf dem Host-Konsole anmelden (über Docker-Compose) und Log-in-Datei – user2860204

+0

Ich denke, ich bin nicht klar, was Sie mit der Protokolldatei zu tun versuchen. Wo/was ist "/redis.log", eine freigegebene Datei? Es gibt wahrscheinlich einen besseren Weg zu erreichen, was Sie versuchen zu tun. – ldg

+0

docker-compose Zeige Ausgabe von allen Containern in der Host-Konsole. Ich möchte diese Ausgabe in der Host-Konsole haben, und jeder Container meldet sich in einer separaten Datei im freigegebenen Volume an – user2860204