WillRy/ambiente-docker-laravel

Uso de Supervisor

Opened this issue · 1 comments

Olá!

Primeiramente gostaria de parabenizá-lo pelo repositório. É bem prático e facilita demais. Em seguida, gostaria de saber se é possível adicionar suporte nativo ao supervisor para monitoramento de processos como "websocket" e/ou "filas" do Laravel?

Eu tentei de diversas formas, mas em nenhum delas eu conseguir devido a restrições do usuário "www-data" do servidor web.

Olá AJ Meireles,

Muito obrigado, fico feliz que tenha gostado.

Eu nunca tentei colocar o supervisor dentro destes containers, como comentou,há esta peculiaridade do usuário www-data, mas acredito que deva sim ter alguma forma.

Este próximo final de semana, testarei esta possibilidade, pois fiquei curioso. Mas posso adiantar algumas ideias, sendo duas:

1 - Tentar configurar o supervisor dentro do Dockerfile(antes de trocar o usuario do container, pois antes da troca para o www-data, tudo está sendo executado como root)

2 - Tentar criar um container específico com o supervisor, conforme o exemplo deste link: https://docs.docker.com/config/containers/multi-service_container/

Note que no rodapé do tutorial, é criada uma imagem tendo o ubuntu como base, instalando o supervisor dentro, neste
caso, podemos usar a imagem do php como base e instalar o supervisor, deixando esse container do supervisor como usuário root, sendo responsável somente pelo processamento das filas/workers

[OBSERVAÇÃO]

O que reforça a segunda ideia que comentei, é que por boa prática, é recomendado que cada container tenha 1 único processo como principal(entrypoint), garantindo que não ocorram erros em um processo, afetando outro(ex: erro no processo do apache, paralizar o processo do php, debilitando o container).

Um exemplo de supervisor, seguindo esta minha sugestão, pode ser visto neste post:
http://www.inanzzz.com/index.php/post/6tik/using-supervisor-within-docker-containers

Este conceito também é valido para a utilização das CRONs(crontab), que em alguns casos, é colocado em um container separado, para ter politicas diferentes.

Espero que tenha ajudado, talvez em breve eu traga mais atualizações.

Qualquer dúvida pode chamar