Я видел кучу учебников, которые, кажется, делают то же самое, что и я, но по какой-то причине мои контейнеры Docker закрываются. По сути, я настраиваю веб-сервер и несколько демонов внутри контейнера Docker. Я делаю последние части этого через скрипт bash, run-all.sh
который я запускаю через CMD в моем Dockerfile. run-all.sh
выглядит так:
service supervisor start
service nginx start
И я запускаю его внутри моего Dockerfile следующим образом:
CMD ["sh", "/root/credentialize_and_run.sh"]
Я вижу, что все службы запускаются правильно, когда я запускаю вещи вручную (то есть, получаю образ с помощью -i -t / bin / bash), и все выглядит так, как будто он работает правильно, когда я запускаю образ, но он выходит один раз это заканчивает запуск моих процессов. Я бы хотел, чтобы процессы выполнялись бесконечно, и, насколько я понимаю, контейнер должен продолжать работать, чтобы это произошло. Тем не менее, когда я бегу docker ps -a
, я вижу:
➜ 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
Что дает? Почему это выходит? Я знаю, что мог бы просто положить цикл while в конец моего bash-скрипта, чтобы он продолжался, но как правильно не допустить его выхода?