Docker compose ne propose pas la fonctionnalité requise. La construction de modèles de fichiers Docker de Discourse permet des résultats Docker flexibles. Avec compose, tout ce que vous avez est un ensemble possible de Dockerfiles fixes qui peuvent résulter en un tas de conteneurs.
Dans ma configuration Discourse, j’utilise un seul conteneur avec Discourse et nginx utilisant un socket UNIX. PostgreSQL et Redis sont un service sur l’hôte. C’est une déviation assez importante par rapport à la configuration par défaut, mais c’est possible dès la sortie de la boîte.
C’est partiellement possible avec compose, peut-être en utilisant la fonctionnalité de profil plutôt mal conçue. Mais même alors, c’est plutôt désordonné. Ou vous devriez fournir différents fichiers compose pour chaque variation.
Vous ne faites que déplacer le problème.
Une configuration compose propre pour Discourse serait les services suivants dans des conteneurs séparés :
- Discourse
- nginx
- PostgreSQL
- Redis
Discourse et nginx doivent partager un volume, rien de grave.
PostgreSQL et Redis… ce sont des choses que vous pourriez vouloir héberger ailleurs, et ne pas avoir de conteneur spécifique à Discourse pour cela. Et maintenant, docker compose devient un problème docker compose up -d lancera votre PostgreSQL indésirable. Ok, donc nous faisons docker compose --profile postgresql up -d pour lancer la configuration de base de discourse, et un conteneur postgresql. docker compose --profile postgresql --profile redis up -d pour la configuration complète du conteneur Discourse autonome. Vous feriez mieux de ne pas oublier un argument --profile ..., car alors vous avez plus de problèmes.
Donc, pour une meilleure expérience utilisateur, vous créez un lanceur pour gérer la création de la commande docker compose souhaitée. Nous sommes maintenant un peu de retour là où nous en étions. Sauf que les modifications du conteneur nginx ne sont pas encore possibles. J’ai donc besoin d’un conteneur nginx-http et d’un conteneur nginx-unix qui devraient être mutuellement exclusifs ? …
Bien sûr, la gestion des plugins pourrait être meilleure, mais faire cela avec docker compose, ce serait l’enfer.