Quali sono tutti gli hook utilizzabili in app.yml

Non esiste in realtà un elenco globale fisso di tipi di hook in app.yml.
Gli hook vengono forniti dinamicamente da Pups e puoi collegarti solo a quelli che esistono nei template che includi.


:magnifying_glass_tilted_left: Come funziona

Quando vedi qualcosa come:

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

funziona perché i template contengono un passaggio come:

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

Pups ti consente di allegare comandi prima o dopo uno qualsiasi di questi punti di aggancio definiti.
Quindi, se un template definisce hook: code, puoi usare before_code: o after_code:.
Se definisce hook: assets_precompile, puoi usare before_assets_precompile: o after_assets_precompile: — e così via.

Se non c’è hook: restart (ad esempio), allora after_restart: semplicemente non verrà attivato.


:white_check_mark: Hook noti per esistere nei template standard

Dai templates/*.yml predefiniti forniti con Discourse Docker:

Nome hook Utilizzo comune Funziona con
code Fase di configurazione principale per cloni di plugin, modifiche di file personalizzate, ecc. before_code: / after_code:
assets_precompile Dopo la compilazione degli asset di Rails (ad es. caricamento su S3, pulizia) after_assets_precompile:
web Per modifiche dell’ultimo minuto prima dell’avvio del processo web before_web:

Spesso vedrai after_code: e before_code: utilizzati negli esempi di installazione di plugin — questi sono gli unici necessari nella maggior parte delle configurazioni.


:cross_mark: Hook che non esistono per impostazione predefinita

Nomi come after_restart o after_post_boot non corrispondono ad alcun hook: all’interno dei template standard, quindi Pups non sa dove collegarli.
Non verranno attivati a meno che tu non aggiunga un passaggio corrispondente hook: restart in un template personalizzato.


:toolbox: Come trovare tutti gli hook disponibili sul tuo sistema

Dalla tua cartella /var/discourse, esegui:

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

Questo elencherà ogni nome di hook supportato dai template che includi attualmente.
Qualsiasi cosa trovi lì può essere utilizzata come before_<nome>: o after_<nome>: all’interno del tuo blocco hooks:.


:blue_book: Riferimento

Questo comportamento è spiegato brevemente nel README di Pups (lo strumento di gestione della configurazione utilizzato dall’installazione Docker di Discourse):

“Gli hook sono punti nei template che consentono l’iniezione di comandi prima o dopo un passaggio etichettato con hook:.”


:puzzle_piece: In pratica

  • Usa after_code: per la maggior parte dei comandi shell personalizzati (come le installazioni di plugin).
  • Per le cose che dovrebbero accadere all’avvio o al riavvio del container, usa uno script di avvio o un’attività supervisord invece di inventare nuovi nomi di hook.
  • Per aggiungere il tuo tipo di hook, crea un nuovo template con una voce hook: something personalizzata, quindi puntalo da app.yml.

TL;DR:
Solo i nomi degli hook che compaiono effettivamente come voci hook: nei tuoi template esistono.
Nel Discourse Docker standard, si tratta fondamentalmente di code, assets_precompile e web.

2 Mi Piace