C’est une bonne question, mais je n’ai pas de réponse satisfaisante à vous donner.
Le système de configuration utilisé à l’intérieur du conteneur est :
Le README explique généralement comment fonctionnent les hooks. Les hooks spécifiques disponibles dépendent de la configuration de votre instance — le fichier principal app.yml inclut un ou plusieurs modèles. Dans la plupart des cas, l’un d’eux est web.template.yml :
C’est là que le hook assets_precompile est défini (à la [L159] au moment où j’écris ces lignes). Selon la documentation de Pups, vous pouvez exécuter d’autres commandes avant ou après son exécution en utilisant respectivement before_assets_precompile et after_assets_precompile.
Les commandes sont exécutées à l’intérieur du conteneur Docker, donc vous n’avez rien à faire de ce côté-là.
La directive cd: peut pointer directement vers /var/www/discourse/public/assets/, et chaque ligne dans cmd est exécutée depuis ce répertoire. (Attention : chaque ligne d’un tableau cmd est exécutée dans un shell distinct, comme dans un Makefile).
Je ne sais pas si le contenu de /var/www/discourse/public/assets/ sera conservé entre les builds, il se peut donc que vous deviez créer le dépôt Git local et forcer le push à chaque fois. La solution « plus correcte » pourrait consister à définir un volume Docker dans app.yml pour le répertoire des assets sur un volume Docker défini dans app.yml comme les autres et le persister en dehors du conteneur.