Olá, gostaria de saber se é possível adicionar um serviço runit em um plugin? Caso não seja possível, adoraria ouvir sobre suas estratégias para lidar com esse tipo de problema: tenho um programa C++ de longa execução que precisa ser executado junto com o Discourse. Ele deve ser reiniciado automaticamente e se comportar basicamente como um daemon. Muito obrigado!
Você pode instalar coisas dentro do app.yml e executar comandos do sistema dentro do Rails para verificar e executar tarefas. Você poderia encapsular um despachante em um job regular?
isso é realmente trabalhoso. Idealmente, tudo aconteceria no plugin.
obrigado pela sua resposta.
![]()
O padrão parece ser o correto para mim, já que os templates são como o Docker Compose.
Uso isso para clonar e criar um Frotz simples no plugin Discourse Frotz. É extremamente confiável.
Para algumas tarefas de longa duração em um plugin que escrevi, usei a interface de jobs para executar algumas tarefas do Ansible que podem levar horas para serem concluídas.
Mas, se for “ao lado” do aplicativo, um template no app.yml parece adequado; se for “iniciado pelo Discourse”, um job faz mais sentido.
Não é. Dentro do container, todo o código do plugin é executado como o usuário discourse. Esse usuário não possui permissões suficientes (dentro do container, novamente) para controlar serviços runit.
Execute o processo em outro container Docker no mesmo hardware. Ele deve escutar em uma porta TCP local. Exporte a URL para conectar ao outro serviço no bloco env: do app.yaml, por exemplo:
env:
CUSTOM_SERVICE_URL: 'localhost:5309'
Faça com que o plugin obtenha a string de conexão por meio de ENV["CUSTOM_SERVICE_URL"].