Nur Web - brauche ich ein separates Bild für jeden Container?

Hallo Leute.

Etwas Triviales, dachte ich, aber ich konnte keine klare Antwort finden, daher frage ich hier.

Bei nur Web-Containern – wie erstelle und verwende ich ein Image, das solche Container gemeinsam nutzen würden/sollten?

Das muss doch Sinn ergeben – ein solcher „dünner“ Discourse-Container mit allem außerhalb (besonders bei einem armen Mann mit XS-VMs) und jeder mit seinem eigenen Docker-Image ist… ergibt in meinem Kopf keinen Sinn, oder?

Ich hoffe, ich verpasse eine „offensichtliche“ Dokumentation/Anleitung für ein solch einfaches (und gängiges/beliebtes?) Szenario?
Vielen Dank.

Ja, Sie können die einzelne Postgres-Datenbank für mehrere Discourse-Sites verwenden, aber es sei denn, Sie werden Multisite verwenden (siehe Multisite configuration with Docker), benötigt jede ihre eigene Redis-Instanz.

Sie müssten eine weitere Datenbank erstellen und den zweiten Web-Container so konfigurieren, dass er diese anstelle der Datenbank namens Discourse verwendet.

1 „Gefällt mir“

Vielen Dank, dass Sie sich Zeit genommen haben, aber… das ist nicht das, wonach ich frage.
Ich versuche es noch einmal, entschuldigen Sie, wenn es mir wieder nicht gelingt.
Wenn ich:
→ $ ./launcher bootstrap a.forum.xyz # oder ähnlich
dann erstellt der Prozess:

-> $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local_discourse/a.forum.xyz latest d7a7b6509811 2 Stunden her 4,19GB

und das passiert bei jedem Launcher, der für ein anderes/neues Forum ausgeführt wird.
Ich habe also mehrere Images desselben Discourse - bin nur ich das & sollte das Ergebnis anders sein?
Wenn nicht nur ich & das das gewünschte & erwartete Ergebnis ist, dann ist das - sicher, ich bin kein Entwickler und habe keine Ahnung von den beteiligten Prozessen - eher wirklich extrem verschwenderisch (vielleicht besonders mit nur-Web-Containern) - oder?

Was ich mir erhofft habe - als ich Discourse zum ersten Mal ausprobiert habe - war ziemlich genau das, was jede andere Software, die dockerisiert ist, tut, nämlich - dieses eine Image zu bekommen und viele Container davon auszuführen. Ist Discourse dazu nicht in der Lage?

Wenn Sie denselben Container mit unterschiedlichen Einstellungen für verschiedene Websites verwenden möchten, können Sie

./launcher start-cmd

um die Parameter zum Starten zu erhalten. Sie können diese für die anderen Websites, die Sie ausführen möchten, ändern. Sie benötigen für jede weiterhin eine Datenbank und ein Redis.

2 „Gefällt mir“

Es enthält eindeutige Kopien der Themes Ihrer Sites, einschließlich JS, CSS und anderer Asset-Typen.

Auch die eindeutige Kombination Ihrer Plugins und deren Abhängigkeiten.

Es ist eine lange Geschichte, aber Discourse und die meisten Werkzeuge sind älter als Dinge wie Docker Compose.

Wir liefern einen fetten Container, der das ganze Drum und Dran enthält, und das hat mehrere Kompromisse. Zum einen ermöglicht der zustandsbehaftete Container Funktionen wie unser webbasiertes Ein-Klick-Update.

Aus der Sicht eines moderneren Ansatzes, wie Container heute normalerweise eingesetzt werden, ist dies tatsächlich eine große Diskrepanz. Dies wird ausführlich in Kann Discourse häufige Docker-Images liefern, die nicht neu erstellt werden müssen? diskutiert und ist lesenswert.

Letztendlich funktioniert unser aktueller Status quo gut für Leute, die nur leicht technikaffin sind, Befehle in einer SSH-Sitzung kopieren und einfügen und DNS konfigurieren können, aber keine Meister von Linux-Containern sind.

Und für die Linux-Container-Schwarzgurte da draußen können wir ihnen sagen, dass sie dieses neu erstellte Image nehmen, in eine Registry verschieben und auf ihrer bevorzugten Container-Orchestrierungssoftware wiederverwenden können.

Leute zwischen den beiden oben genannten Personas spüren jedoch den Schmerz am meisten.

2 „Gefällt mir“

Ich habe keine Erklärung gefunden, wie man eine Redis-Instanz für mehrere Instanzen in dieser Anleitung verwendet, aber das scheint out-of-the-box zu funktionieren, wenn die Multisite-Konfiguration verfügbar ist?

Verstehe ich das richtig?
a) Multisite führt dasselbe Docker-Image für mehrere Foren aus und verwendet eine Redis- und eine Postgres-Serverinstanz.
b) Die Verwendung einer Redis-Instanz für mehrere Discourse-Instanzen (mit demselben oder einem anderen Image) ist nicht möglich, da ohne Aktivierung von Multisite kein Präfix zu den Redis-Schlüsseln hinzugefügt wird.
c) Es gibt keine andere Möglichkeit, ein Redis-Schlüsselpräfix zu erzwingen.
d) Das Erzwingen unterschiedlicher Redis-Schlüsselpräfixe für verschiedene Discourse-Images würde die Verwendung eines Redis-Servers ermöglichen.
e) Die allgemeine Unterstützung für die Erzwingung eines allgemeinen Redis-Präfixes würde mehrere Kernänderungen erfordern.