Quais são todos os hooks que posso usar em app.yml

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.


:magnifying_glass_tilted_left: 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ão after_restart: simplesmente não será acionado.


:white_check_mark: 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.


:cross_mark: 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.


:toolbox: 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:.


:blue_book: 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:.”


:puzzle_piece: 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 supervisord em vez de inventar novos nomes de hook.
  • Para adicionar seu próprio tipo de hook, crie um novo template com uma entrada hook: algo personalizada e, em seguida, direcione-o de app.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.

2 curtidas