Я пытался запустить эти два, когда мой образ докера запускается, но они никогда не запускаются.
[supervisord]
nodaemon=true
[program:rsyslog]
command=/bin/bash "service rsyslog start"
[program:haproxy]
command=/bin/bash "service haproxy start"
Какая команда нужна чтобы запустить оба в порядке: сначала rsyslog, а затем haproxy?
Это не сработает, потому что команда service ... start
запускает программу как демон и отправляет ее в фоновом режиме. Супервизор
не может с этим справиться, ему нужно запускать их как подпроцесс и запускать в режиме «на открытом воздухе». См. здесь :
Программы, предназначенные для запуска под супервизором , не должны демонстрировать самих себя. Вместо этого они должны работать на переднем плане . Им следует не отсоединяться от терминала, с которого они запущены. Самый простой способ узнать, будет ли программа работать на переднем плане, - это запустите команду, которая вызывает программу из приглашения оболочки. Если это возвращает вам контроль над терминалом, но продолжает работать, он демонизировать себя, и это почти наверняка будет неправильным способом запустить его под супервизором. Вы хотите запустить команду, которая по существу требует, чтобы вы нажали Ctrl-C, чтобы вернуть управление терминалом. Если он возвращает вам приглашение оболочки после ее запуска без необходимости нажмите Ctrl-C, это бесполезно в режиме супервизора. Во всех программах есть варианты, которые нужно запускать на переднем плане, но нет стандартного способа сделай это; вам нужно будет прочитать документацию для каждой программы.
Вот пример конфигурации программы в реальном мире из документации супервизора :
Apache 2.2.6:
[program:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true
Скрипты запуска вашей программы может быть хорошим местом, чтобы узнать, как запускается программа, для правильной настройки.
Некоторые примеры здесь
[supervisord]
nodaemon=true
[program:rsyslog]
command=service rsyslog start
[program:haproxy]
command=service haproxy start
Однако теперь я должен отложить запуск haproxy, так как haproxy требует, чтобы rsyslog был запущен заранее. Однако это еще одна проблема.
Нужно поставить что-то подобное, только настроить параметры
[program:rsyslog]
command=/sbin/rsyslogd -n -a /var/run/systemd/journal/syslog
numprocs=1
autostart=true
autorestart=true
С уважением,