Comment utiliser pups - exécuter la sortie dans Docker?

Pendant longtemps, je n’ai pas vraiment compris ce qu’était pups, et je suis encore un peu confus, pour être honnête. :grinning_face_with_smiling_eyes: :sweat_smile:

Je comprends que les images Docker de Discourse doivent être configurées. Au lieu de le faire via des scripts bash, cela se fait via des fichiers yml (qui génèrent des scripts bash) que l’on trouve ici : https://github.com/discourse/discourse_docker/tree/master/samples

Le lancement des conteneurs Docker et la configuration via pups sont entremêlés dans le script de lancement ici :

La ligne à laquelle j’ai fait référence m’intéresse particulièrement. Elle semble faire en sorte que pups s’exécute dans le conteneur Docker. J’ai essayé d’exécuter un test.yml via pups et, évidemment, cela ne s’est pas exécuté dans un conteneur Docker. Cela a simplement produit un script bash (des commandes bash ?) qui a été exécuté immédiatement.

Ma question est la suivante : comment faire en sorte que pups s’exécute dans le conteneur Docker de développement ? La ligne que j’ai indiquée est très longue et certaines parties semblent inutiles pour mon cas d’usage. Peut-être que quelqu’un pourrait donner un exemple simple montrant comment combiner la sortie de pups avec un conteneur Docker.

Je veux essentiellement ajouter une commande pups similaire à celle du script de lancement, à la fin du script boot_dev (ou l’exécuter en tant que script séparé après le script boot_dev).

Informations de contexte :

La raison de cette démarche → Je souhaite ajouter un processus de longue durée à runit. @merefield m’a orienté vers son plugin Frotz comme référence pour savoir comment faire cela :

La question est : comment faire cela localement pour tester l’entrée pups ? Comme je le comprends, l’instance de développement Docker n’est pas configurée via un fichier yml et pups. L’entrée pups du plugin Frotz concerne le fichier yml du serveur lors de l’installation du plugin, donc je suis essentiellement confus quant à la manière de procéder localement.

Bon, merci beaucoup :sweat_smile

EDIT :
Bon, j’ai trouvé ce genre de lignes.

Cela signifie donc que pups doit simplement être exécuté dans le conteneur. Je ne sais pas pourquoi j’ai pensé qu’il s’agissait simplement de générer des commandes. J’ai simplement vu cette phrase dans le fichier README :

pups est une petite bibliothèque qui vous permet d’automatiser le processus de création d’images Unix.

Cela n’avait pas beaucoup de sens pour moi, alors naturellement, mon subconscient a pris le dessus.

L’argument --gen-docker-run-args est utilisé pour faire en sorte que la sortie des arguments de pups soit au format docker run <arguments de sortie>.

D’une manière ou d’une autre, cela m’a amené à conceptualiser pups comme un outil qui transforme les fichiers yml en sorties de commandes bash. Comme un compilateur yml vers bash. Mais en réalité, c’est plus comme un interpréteur yml. Il ne se contente pas de créer les commandes, il les exécute également immédiatement.