Utiliser une image Docker construite avec un launcher dans docker-compose

Mais dans ce cas, l’étape de bootstrap doit être effectuée sur la machine de production, ce qui va à l’encontre de l’objectif de pousser une image de base vers un registre de conteneurs, si je ne me trompe pas (car cela se ferait dans le but d’éviter de devoir faire un bootstrap d’image en production, sauf peut-être pour exécuter une étape de migration de base de données ou quelque chose de similaire).

C’est ce que je fais sur les sites non-Discourse que j’héberge : j’utilise normalement Flyway pour exécuter les migrations dans la base de données, ainsi que quelques autres tâches comme vider le cache Redis, mais sans lancer d’autres processus intensifs, en particulier ceux qui dépendent de services externes, comme la mise à jour des certificats HTTPS (je le ferais via un cronjob, sauf la première fois, ce qui n’est pas un problème) ou la modification du code source (qui serait statique dans l’image, comme les paquets, les bibliothèques et autres éléments). Il semble que Discourse utilise Rake, ce qui est acceptable, mais il effectue d’autres tâches telles que l’installation de gems, la génération d’assets, la mise à jour de la base de données MaxMind et peut-être d’autres services (ce qui pourrait casser l’étape de reconstruction si, par exemple, le service est en panne ou s’ils modifient l’API, ce qui est rare mais possible).

Je ne dis pas que Discourse devrait fonctionner ainsi, bien sûr, mais générer une image dans un environnement d’intégration continue (CI) et simplement exécuter une étape de migration de base de données sur les serveurs de staging/production, tout en définissant les variables d’environnement, c’est ce à quoi je m’attendrais. C’est facilement réalisable avec d’autres logiciels comme WordPress, MediaWiki, RocketChat, etc. Discourse est, à mon avis, le meilleur logiciel pour les forums, et ils ont peut-être de bonnes raisons de procéder ainsi, mais pour l’instant, je n’utiliserais que l’installation standard (ou l’installation multi-conteneurs) pour éviter les maux de tête et espérer simplement que rien ne tourne mal lors des reconstructions.

Il semble que le bootstrap doive toujours être effectué dans un environnement de production, et non dans un environnement CI pour générer une image de base à utiliser à la fois dans les environnements de staging et de production. De plus, ne pas suivre une installation standard est un énorme signal d’alarme, qui pourrait devenir un casse-tête à l’avenir à mesure que le logiciel recevra des mises à jour.