Quels sont tous les hooks dont je peux me servir dans app.yml

Il n’existe en fait pas de liste globale fixe de types de hooks dans app.yml.
Les hooks sont fournis dynamiquement par Pups, et vous ne pouvez vous attacher qu’à ceux qui existent dans les modèles que vous incluez.


:magnifying_glass_tilted_left: Comment ça marche

Lorsque vous voyez quelque chose comme :

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

cela fonctionne parce que les modèles contiennent une étape comme :

- hook: code
  run:
    - exec: ...

Pups vous permet d’attacher des commandes avant ou après n’importe lequel de ces points de hook définis.
Donc, si un modèle définit hook: code, vous pouvez utiliser before_code: ou after_code:.
S’il définit hook: assets_precompile, vous pouvez utiliser before_assets_precompile: ou after_assets_precompile: — et ainsi de suite.

S’il n’y a pas de hook: restart (par exemple), alors after_restart: ne se déclenchera tout simplement pas.


:white_check_mark: Hooks connus pour exister dans les modèles par défaut

À partir des templates/*.yml par défaut fournis avec Discourse Docker :

Nom du hook Usage courant Fonctionne avec
code Phase de configuration principale pour le clonage de plugins, les modifications de fichiers personnalisés, etc. before_code: / after_code:
assets_precompile Après la compilation des ressources Rails (par exemple, téléversement vers S3, nettoyage) after_assets_precompile:
web Pour les ajustements de dernière minute avant le démarrage du processus web before_web:

Vous verrez souvent after_code: et before_code: utilisés dans les exemples d’installation de plugins — ce sont les seuls nécessaires dans la plupart des configurations.


:cross_mark: Hooks qui n’existent pas par défaut

Des noms comme after_restart ou after_post_boot ne correspondent à aucun hook: dans les modèles standard, donc Pups ne sait pas où les attacher.
Ils ne se déclencheront pas à moins que vous n’ajoutiez une étape hook: restart correspondante dans un modèle personnalisé.


:toolbox: Comment trouver tous les hooks disponibles sur votre système

Depuis votre dossier /var/discourse, exécutez :

grep -R "hook:" -n templates/ samples/

Cela listera chaque nom de hook pris en charge par les modèles que vous incluez actuellement.
Tout ce que vous y trouverez peut être utilisé comme before_<nom>: ou after_<nom>: dans votre bloc hooks:.


:blue_book: Référence

Ce comportement est brièvement expliqué dans le README de Pups (l’outil de gestion de configuration utilisé par la configuration Docker de Discourse) :

“Les hooks sont des points dans les modèles qui permettent d’injecter des commandes avant ou après une étape marquée avec hook:.”


:puzzle_piece: En pratique

  • Utilisez after_code: pour la plupart des commandes shell personnalisées (comme les installations de plugins).
  • Pour les choses qui devraient se produire au démarrage ou au redémarrage du conteneur, utilisez un petit script de démarrage ou une tâche supervisord au lieu d’inventer de nouveaux noms de hooks.
  • Pour ajouter votre propre type de hook, créez un nouveau modèle avec une entrée hook: quelque chose, puis ciblez-le depuis app.yml.

TL;DR :
Seuls les noms de hooks qui apparaissent réellement comme entrées hook: dans vos modèles existent.
Dans le Discourse Docker standard, il s’agit essentiellement de code, assets_precompile et web.

2 « J'aime »