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.
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), alloraafter_restart:semplicemente non verrà attivato.
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.
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.
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:.
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:.”
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à
supervisordinvece di inventare nuovi nomi di hook. - Per aggiungere il tuo tipo di hook, crea un nuovo template con una voce
hook: somethingpersonalizzata, quindi puntalo daapp.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.