Tenho a seguinte configuração supervisionada:
[supervisord]
nodaemon=true
logfile=NONE
[program:service1]
command=/usr/sbin/service1
user=someone
autostart=true
autorestart=true
startsecs=30
[program:service2]
command=/usr/sbin/service2
user=root
autostart=true
autorestart=true
startsecs=30
Estou usando essa configuração em um contêiner docker. O problema é que se o service1 travar, o container continua rodando como se tudo estivesse normal. Como eu poderia mudar esse comportamento, para que todo o contêiner saia se um serviço travasse?
Este SF Q&A intitulado: Como sair de todos os processos do supervisor se um for encerrado com 0 resultado soa como o que você está procurando.
NOTA: Essa abordagem usa um eventlistener .
Exemplo 1
O
kill.py
roteiro:Exemplo #2
Este exemplo mostra uma abordagem mais simplificada, ainda está usando um eventlistener, mas mostra como você pode fazer o mesmo mostrado acima, mas com apenas um único ouvinte e script de shell.
O script de shell que faz a matança:
O supervisord.conf:
Referências