Como matar o daemon de transmissão em um contêiner do Docker?

1

Estou tentando fazer o dockerize de um daemon de transmissão autônomo com https. Por isso, estou usando transmission-daemon e nginx packages e a janela de encaixe é baseada no Linux alpino.

Para executar os dois programas, estou usando supervisor .

Tudo funciona bem, mas eu quero que docker container stop gentilmente mate meu contêiner. Então, eu configurei supervisor para propagar o sinal TERM para transmission-daemon .

Isso funciona bem quando a transmissão está ociosa. Mas se eu parar o contêiner quando ele faz o download ou faz alguma coisa, infelizmente não funciona. Parece ignorar completamente o sinal, porque mesmo depois do download terminar, ele continua rodando.

Eu não tenho absolutamente nenhuma ideia do porquê. Alguém pode me ajudar por favor?

Aqui está minha configuração de transmissão do supervisor:

[program:transmission]
user=transmission
command=/usr/bin/transmission-daemon -f
stopsignal=TERM
stopwaitsecs=60
stopasgroup=true
killasgroup=true

Estou aberto a qualquer sugestão.

    
por lama02 30.11.2017 / 13:03

2 respostas

1

No wiki do arco de transmissão , parece que os comandos para finalizar transmission-daemon são:

killall transmission-daemon

Ou

$ transmission-remote --exit

Ou de ajuda do Ubuntu:

transmission-remote -n 'transmission:transmission' -q

Eu acho que um sinal SIGTERM e TERM é o mesmo, e killall é o padrão para enviar um SIGTERM, parece que seu supervisor deve trabalhar ... depois do stopwaitsecs ele deve enviar um sinal KILL também, então a menos que não esteja enviando os sinais certos na hora certa ... Confirme em um terminal que TERM / SIGTERM irá matar a transmissão. Se isso não acontecer, talvez seja um bug.

Tente adicionar uma linha redirect_stderr ou stdout_logfile para ver se isso informará ao supervisord qualquer coisa útil

    
por 30.11.2017 / 14:05
1

É provavelmente um bug. Relatado no rastreador de bugs da Alpine:

link

    
por 01.12.2017 / 11:06