Несколько способов использовать контейнер для запуска нескольких процессов одновременно:
- Обертывание нескольких процессов скриптом-обёрткой. openode.xyz Нужно написать скрипт, который запускает все процессы и ждёт их завершения. openode.xyz Затем установить этот скрипт в качестве Docker ENTRYPOINT, чтобы запустить его как процесс переднего плана контейнера. openode.xyz Контейнер будет работать до тех пор, пока один из обёрнутых скриптов не завершится. openode.xyz
- Использование опции –init контейнера. openode.xyz Команда docker run имеет флаг –init, который изменяет точку входа, чтобы использовать tini в качестве PID 1. openode.xyz Это минимальная реализация процесса init, которая запускает CMD, обрабатывает пересылку сигналов и постоянно убирает зомби-процессы. openode.xyz Стоит использовать этот флаг, если ожидается породить много процессов и не хочется вручную заниматься их очисткой. openode.xyz
- Использование специализированного менеджера процессов. openode.xyz Менеджер процессов становится ENTRYPOINT и несёт ответственность за запуск, обслуживание и очистку рабочих процессов. openode.xyz Популярным выбором является supervisord. openode.xyz learntutorials.net
Также можно добавить все команды для установки, настройки и запуска приложений в один Dockerfile и использовать Supervisor для запуска приложений при создании контейнера. stackoverflow.com