Widziałem kilka samouczków, które wydają się robić to samo, co próbuję zrobić, ale z jakiegoś powodu moje kontenery Docker zamykają się. Zasadniczo konfiguruję serwer WWW i kilka demonów w kontenerze Dockera. run-all.shWykonuję ostatnie części tego za pomocą skryptu bash o nazwie, który uruchamiam przez CMD w moim pliku Dockerfile. run-all.shwygląda tak:
service supervisor start
service nginx start
I uruchamiam go w moim pliku Docker w następujący sposób:
CMD ["sh", "/root/credentialize_and_run.sh"]
Widzę, że wszystkie usługi uruchamiają się poprawnie, gdy uruchamiam rzeczy ręcznie (tj. Wchodzę do obrazu za pomocą -i -t / bin / bash) i wszystko wygląda tak, jakby działało poprawnie po uruchomieniu obrazu, ale kończy się raz kończy uruchamianie moich procesów. Chciałbym, aby procesy działały w nieskończoność i, o ile rozumiem, kontener musi działać, aby tak się stało. Niemniej jednak, gdy biegnę docker ps -a, widzę:
➜ 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
Co daje? Dlaczego to wychodzi? Wiem, że mógłbym po prostu umieścić pętlę while na końcu mojego skryptu bash, aby go utrzymać, ale jaki jest właściwy sposób, aby zapobiec jego zamknięciu?