https://smarden.org/runit/ Supervisor это конечно здорово. Но он на пайтоне и весьма прожорливый. Меняем первичную стратегию на runit. /etc/sv/symfony-consumer/run #!/bin/sh
#Перенаправляем вывод ошибок в стандартный вывод для svlogdexec 2>&1
#Переходим в корневую директорию проекта Symfonycd /var/www/my-symfony-project || exit 1
#Указываем переменные окружения, если это необходимоexport APP_ENV=prod
#Запускаем consumer через exec от имени менее привилегированного пользователя (например, www-data) #Флаг --limit=100 остановит воркер после 100 сообщений (защита от утечек памяти), runit его тут же перезапуститexec chpst -u www-data:www-data php bin/console messenger:consume async --limit=100 --memory-limit=128M
/etc/sv/symfony-consumer/log/run (логирование, с ротацией логов) #!/bin/sh
#Создаем директорию для логов, если её нетmkdir -p /var/log/symfony-consumer
#Запускаем утилиту логирования svlogdexec svlogd -tt /var/log/symfony-consumer
Не забываем внутри контейнера сделать ln -s /etc/sv/symfony-consumer /etc/service/
После этого runit автоматически обнаружит и запустит наш новый сервис.
Следующим шагов остается настроить правильный перезапуск всего контейнера с runit во время релиза новой версии образа докер.
· 13.04
Всегда запускал через systemd или кроном, если требовалось.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён