Ich habe eine Reihe von Tutorials gesehen, die anscheinend dasselbe tun, was ich versuche, aber aus irgendeinem Grund werden meine Docker-Container beendet. Grundsätzlich richte ich einen Webserver und einige Daemons in einem Docker-Container ein. Ich mache die letzten Teile davon durch ein Bash-Skript run-all.sh
, das CMD in meiner Docker-Datei durchläuft. run-all.sh
sieht aus wie das:
service supervisor start
service nginx start
Und ich starte es in meinem Dockerfile wie folgt:
CMD ["sh", "/root/credentialize_and_run.sh"]
Ich kann sehen, dass alle Dienste korrekt gestartet werden, wenn ich Dinge manuell ausführe (dh mit -i -t / bin / bash zum Image komme), und alles sieht so aus, als würde es korrekt ausgeführt, wenn ich das Image ausführe, aber es wird einmal beendet Damit ist der Start meiner Prozesse abgeschlossen. Ich möchte, dass die Prozesse unbegrenzt ausgeführt werden, und soweit ich weiß, muss der Container weiter ausgeführt werden, damit dies geschieht. Trotzdem sehe docker ps -a
ich beim Laufen :
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
Was gibt? Warum ist es aufregend? Ich weiß, ich könnte einfach eine while-Schleife am Ende meines Bash-Skripts einfügen, um es aufrechtzuerhalten, aber wie kann ich verhindern, dass es beendet wird?