Docker-mailman: Full Stack Docker Compose

Erstellt am 4. Jan. 2019  ·  7Kommentare  ·  Quelle: maxking/docker-mailman

zunächst einmal vielen Dank für die tollen Container, das hat meine Installation sehr erleichtert. Ich habe vor kurzem ein komplettes Docker-Compose-Setup für die Produktion erstellt. Ich möchte einige Änderungen/Ergänzungen zu diesem Projekt vorschlagen/diskutieren, die ich bei meinem Setup gelernt habe.

  • Bereitstellung eines vollständigen Docker-Compose einschließlich MTA und SSL-Terminierung (grundsätzlich #174)

    • Standortspezifische Variablen in eine .env-Datei verschieben (Geheimnisse und Domänen)

    • Fügen Sie einen Postfix-Container mit der Mailman-spezifischen Konfiguration und einem konfigurierbaren lokalen Subnetz hinzu (würde bei #282 helfen)

    • füge einen nginx-Container hinzu, der bereits die statischen Dateien und Proxies zum uwsgi-Socket enthält (behandelt keine SSL-Beendigung, es gibt bereits genug Container), bezogen auf #144, könnte aber wahrscheinlich durch ein mehrstufiges Dockerfile gelöst werden

    • Split config Ordner von Datenordnern überschreiben

    • Log in Standardout (#2, #134)

  • Standardeinträge aus docker-compose entfernen (Hostname, Containername, Links)
  • Versuchen Sie, das hartcodierte Subnetz zu entfernen und verwenden Sie DNS-basiertes Routing (nicht sicher, ob es machbar wäre, wäre aber großartig) (Verwandte Nr. 44)

Ich würde gerne PRs für die oben genannten Punkte bereitstellen, wollte aber zuerst Ihr Feedback einholen, nachdem ich dieses Ticket geschrieben und alle zugehörigen Tickets gefunden habe, bin ich mir ziemlich sicher, dass alle Änderungen auch in Ihrem Interesse sind, also hauptsächlich als Todo-Liste für mich.

Hilfreichster Kommentar

Alle 7 Kommentare

Vielen Dank für Ihr Interesse daran, ich würde mich freuen, wenn das passiert!

  • Ich denke, wir sollten die Full-Stack-Komposition als separate Option zur aktuellen Version beibehalten, hauptsächlich für die Leute, die ihren MTA/Webserver auf dem Host benötigen, um andere Dinge zu tun, als nur Mailman zu bedienen.
  • Verschieben von Umgebungsvariablen .env Datei macht nicht wirklich eine ganze Menge Sinn für mich, ich verstehe , dass Sie wahrscheinlich Ihre Geheimnisse sicherer halten wollen, aber es sei denn , man einige Linux - Berechtigungen mit Zugang zu verweigern .env Datei, aber nicht zu docker-compose.yaml , es ist irgendwie nutzlos, oder? Und ich bin mir nicht sicher, wie man das anstellen würde.
  • Das Hinzufügen eines Postfix-Containers sollte eine große Hilfe sein, es hat nichts mit #282 zu tun, aber wir können das in einem separaten MR behandeln.
  • Ich denke, das Hinzufügen eines Nginx-Containers, der sich ein Volume mit mailman-web teilt, wäre am besten. Ich interessiere mich momentan nicht sehr für #144, vor allem, weil es uns nicht wirklich beschleunigt oder so. Das Generieren statischer Dateien beim Start sollte normalerweise in Ordnung sein.
  • Die Protokollierung auf stdout sollte großartig sein, Django kann das wahrscheinlich leicht tun, Core könnte das.
  • Warum wollen wir die Standardeinträge für Hostname, Containername, Links entfernen?
  • Das Entfernen der hartcodierten Netzwerksachen ist etwas, was ich wirklich tun möchte. Das kann einige Herausforderungen mit sich bringen, je nachdem, wie Hyperkitty Anfragen von Core authentifiziert, aber wir können das auch im Upstream beheben.

Insgesamt gefallen mir die meisten Ideen. Im Idealfall möchten wir, dass jede Änderung in einem eigenen separaten Pull-Request steht und wir dann in ihren jeweiligen PRs genauer besprechen können.

Über die .env Datei:

  • es macht dem Endbenutzer klar, welche Variablen geändert werden sollten, ohne die gesamte docker-compose.yml zu suchen
  • es entfernt doppelte Definitionen (wie den Hyperkitty-API-Schlüssel)
  • es könnte/sollte es einfacher machen, eine docker-compose.yml zu aktualisieren (da man die Upstream-Datei verwendet) und muss nur geänderte Variablen im lokalen .env hinzufügen/ändern
  • Endbenutzer können ihre laufende docker-compose.yml in die Quellcodeverwaltung einchecken, ohne Geheimnisse preiszugeben

Ich denke, eine PR wird das klarer machen, es ist nicht viel Arbeit, also kein Ärger, wenn wir es fallen lassen.

Links sind eine veraltete Funktion, standardmäßig befinden sich alle Container in einem Serviceabschnitt in einem Netzwerk, also sind sie ohnehin verbunden. Hostname und Container-Name sind standardmäßig im aktuellen Abschnitt in der Service-Definition enthalten, also die gleichen wie derzeit explizit definiert, und ich denke, das Entfernen macht die gesamte Datei kleiner und damit leichter zu verstehen.

Etwas verwandt habe ich diese Container in Mailu (https://github.com/Mailu/Mailu) integriert, das den Rest des Stack bereitstellt. Besteht Interesse an einem solchen Setup?

@pgeorgi Wenn Sie bereits über diese Integration verfügen, die Sie mit diesen Bildern beibehalten

@pgeorgi auf jeden Fall

Ich stimme @morbidick in Bezug auf die Datei .env , hauptsächlich weil sie die Aktualisierung viel einfacher macht.
Sie können einfach ein git pull ohne Ihr Repo zu verschmutzen.
Außerdem sollte sich die Datei .env in .gitignore

Beispiel : Sehen Sie sich an, wie Sentry dies macht:
https://github.com/getsentry/onpremise

Sie bieten auch eine env.example Datei, die Sie in Ihre eigene .env Datei kopieren können.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen