O problema (ou pelo menos um problema) é que você está usando o -d
flag do docker (para "desanexado") no seu ExecStart=
.
O systemd espera que o comando que ele executa permaneça em execução enquanto o serviço está ativo, em outras palavras, para ser executado em primeiro plano. Pelo menos ao configurar serviços de Type=simple
, que é o tipo padrão e o que se aplica à sua unidade.
Quando você está executando um comando que sai imediatamente (como docker run -d
), o systemd assume que seu serviço é iniciado e permanece ativo apenas por um momento, até que seja concluído. Então, enquanto o seu contêiner ainda estiver ativo, o serviço systemd vai achar que não. Você pode confirmar isso com um comando como systemctl status consul.service
. (Verifique este comando com frequência para ajudá-lo a entender o que o systemd acha que o status do seu serviço é. Poste sua saída aqui para nos ajudar a diagnosticar quaisquer outros problemas que você esteja tendo também.)
O que está lhe causando problemas quando você tem alguns comandos ExecStopPost=
é que o systemd executará esses comandos, já que ele supõe que o serviço está terminado, matando assim o seu contêiner.
Basta remover o -d
de seu docker run
no comando ExecStart=
para resolver seu problema.