Não existe, na verdade, uma lista global fixa de tipos de hook em app.yml.
Os hooks são fornecidos dinamicamente pelo Pups, e você só pode se conectar aos que existem dentro dos templates que você inclui.
Como funciona
Quando você vê algo como:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
isso funciona porque os templates contêm uma etapa como:
- hook: code
run:
- exec: ...
O Pups permite que você anexe comandos antes ou depois de quaisquer pontos de hook definidos.
Portanto, se um template define hook: code, você pode usar before_code: ou after_code:.
Se ele define hook: assets_precompile, você pode usar before_assets_precompile: ou after_assets_precompile: — e assim por diante.
Se não houver
hook: restart(por exemplo), entãoafter_restart:simplesmente não será acionado.
Hooks conhecidos por existir nos templates padrão
Dos templates/*.yml padrão enviados com o Discourse Docker:
| Nome do Hook | Uso Comum | Funciona com |
|---|---|---|
code |
Estágio principal de configuração para clonagem de plugins, edições de arquivos personalizados, etc. | before_code: / after_code: |
assets_precompile |
Após a compilação dos assets do Rails (por exemplo, upload para S3, limpeza) | after_assets_precompile: |
web |
Para ajustes de última hora antes da inicialização do processo web | before_web: |
Você frequentemente verá after_code: e before_code: usados em exemplos de instalação de plugins — estes são os únicos necessários na maioria das configurações.
Hooks que não existem por padrão
Nomes como after_restart ou after_post_boot não correspondem a nenhum hook: dentro dos templates padrão, então o Pups não sabe onde anexá-los.
Eles não serão acionados, a menos que você adicione uma etapa correspondente hook: restart em um template personalizado.
Como encontrar todos os hooks disponíveis no seu sistema
A partir da sua pasta /var/discourse, execute:
grep -R "hook:" -n templates/ samples/
Isso listará cada nome de hook suportado pelos templates que você inclui atualmente.
Qualquer coisa que você encontrar lá pode ser usada como before_<nome>: ou after_<nome>: dentro do seu bloco hooks:.
Referência
Esse comportamento é explicado brevemente no README do Pups (a ferramenta de gerenciamento de configuração usada pela configuração Docker do Discourse):
“Hooks são pontos em templates que permitem que comandos sejam injetados antes ou depois de uma etapa rotulada com
hook:.”
Na prática
- Use
after_code:para a maioria dos comandos de shell personalizados (como instalações de plugins). - Para coisas que devem acontecer na inicialização ou reinicialização do contêiner, use um pequeno script de inicialização ou tarefa
supervisordem vez de inventar novos nomes de hook. - Para adicionar seu próprio tipo de hook, crie um novo template com uma entrada
hook: algopersonalizada e, em seguida, direcione-o deapp.yml.
TL;DR:
Apenas os nomes de hooks que realmente aparecem como entradas hook: em seus templates existem.
No Discourse Docker padrão, basicamente são code, assets_precompile e web.