Docker-mailman: Docker de pile complète composer

Créé le 4 janv. 2019  ·  7Commentaires  ·  Source: maxking/docker-mailman

tout d'abord merci pour les conteneurs incroyables, cela a rendu mon installation beaucoup plus facile. J'ai récemment créé une configuration complète de

  • fournir une composition complète de docker, y compris la terminaison MTA et SSL (essentiellement #174)

    • déplacer les variables spécifiques au site vers un fichier .env (secrets et domaines)

    • ajouter un conteneur postfix avec la configuration spécifique à mailman et un sous-réseau local configurable (aiderait avec #282)

    • ajouter un conteneur nginx qui inclut déjà les fichiers statiques et les proxys au socket uwsgi (ne gère pas la terminaison ssl, il y a déjà assez de conteneurs là-bas), lié à #144 mais pourrait probablement être résolu par un dockerfile à plusieurs étapes

    • diviser la configuration écraser les dossiers des dossiers de données

    • connectez-vous à la sortie standard (#2, #134)

  • supprimer les entrées par défaut du docker-compose (nom d'hôte, nom du conteneur, liens)
  • essayez de supprimer le sous-réseau codé en dur et utilisez le routage basé sur DNS (je ne sais pas si c'est faisable mais ce serait génial) (connexe # 44)

Je serais heureux de fournir des relations publiques pour les points ci-dessus, mais je voulais d'abord obtenir vos commentaires, après avoir écrit ce ticket et trouvé tous les tickets associés, je suis presque sûr que tous les changements sont également dans votre intérêt, donc principalement en le créant comme liste de tâches pour moi.

Commentaire le plus utile

Tous les 7 commentaires

Merci de votre intérêt pour cela, j'aimerais que cela se produise!

  • Je pense que nous devrions conserver la composition de la pile complète en tant qu'option distincte de l'option actuelle, principalement pour les personnes qui ont besoin de leur serveur MTA/Web sur l'hôte pour faire autre chose que simplement servir Mailman.
  • Déplacer les variables d'environnement vers le fichier .env n'a pas vraiment de sens pour moi, je comprends que vous vouliez probablement protéger vos secrets, mais à moins que vous n'utilisiez des autorisations Linux pour refuser l'accès à .env mais pas vers docker-compose.yaml , c'est un peu inutile, non ? Et je ne sais pas comment on s'y prendrait.
  • L'ajout d'un conteneur postfix devrait être d'une grande aide, il n'a aucun rapport avec #282 , mais nous pouvons gérer cela dans un MR séparé.
  • Je pense qu'il serait préférable d'ajouter un conteneur Nginx qui partage un volume avec mailman-web . Je ne suis pas très intéressé par le #144 pour le moment, surtout parce qu'il ne nous fait pas vraiment accélérer ou quoi que ce soit. La génération de fichiers statiques au démarrage devrait généralement être correcte.
  • La connexion à stdout devrait être excellente, Django peut probablement le faire facilement, Core pourrait le faire.
  • Pourquoi voulons-nous supprimer les entrées par défaut pour le nom d'hôte, le nom du conteneur et les liens ?
  • Supprimer les éléments de réseau codés en dur est quelque chose que je veux vraiment faire, cela pourrait poser des problèmes en fonction de la façon dont Hyperkitty authentifie les demandes de Core, mais nous pouvons également résoudre ce problème en amont.

Dans l'ensemble, j'aime la plupart des idées. Idéalement, nous voudrions que chaque changement soit dans leur propre demande de tirage distincte, puis nous pourrons discuter plus en détail dans leurs PR respectifs.

À propos du fichier .env :

  • il indique clairement à l'utilisateur final quelles variables doivent être modifiées sans rechercher l'ensemble du fichier docker-compose.yml
  • il supprime les définitions en double (comme la clé api hyperkitty)
  • cela pourrait/devrait faciliter la mise à niveau d'un docker-compose.yml (puisque l'on utilise celui en amont) et n'a qu'à ajouter/modifier les variables modifiées dans le .env local
  • les utilisateurs finaux peuvent enregistrer leur docker-compose.yml en cours d'exécution dans le contrôle de source sans exposer de secrets

Je pense qu'un PR rendra cela plus clair, ce n'est pas beaucoup de travail donc pas de soucis si nous le laissons tomber.

Les liens sont une fonctionnalité obsolète, par défaut, tous les conteneurs d'une section de service sont dans un réseau, donc liés de toute façon. Le nom d'hôte et le nom du conteneur sont définis par défaut dans la section actuelle de la définition du service, de sorte qu'ils sont les mêmes que ceux actuellement explicitement définis et je pense que leur suppression rend le fichier entier plus petit et donc plus facile à comprendre.

Un peu lié, j'ai intégré ces conteneurs dans Mailu (https://github.com/Mailu/Mailu) qui fournit le reste de la pile. Y a-t-il un intérêt pour une telle configuration ?

@pgeorgi Si vous avez déjà cette intégration que vous souhaitez conserver en utilisant ces images, je serais heureux d'ajouter un lien vers votre référentiel/poste dans la documentation.

@pgeorgi définitivement

Je suis d'accord avec @morbidick à propos du .env , principalement parce qu'il rend la mise à jour beaucoup plus facile.
Vous pouvez simplement faire un git pull sans polluer votre repo.
De plus, le fichier .env doit être dans .gitignore

Exemple : Regardez comment Sentry fait cela :
https://github.com/getsentry/onpremise

Ils fournissent également un fichier env.example que vous pouvez copier dans votre propre fichier .env .

Cette page vous a été utile?
0 / 5 - 0 notes