Ich versuche, separate Container mit einer externen Datenbank zu implementieren. Ich habe die oben genannten Anweisungen und das Howto für die Einrichtung einer externen PostgreSQL-Datenbank befolgt. Die Einrichtung funktioniert, aber ich frage mich, warum es zwei identische Referenzen (unter web_only und data) auf dieselbe Datenbank gibt. Das lässt mich vermuten, dass ich etwas falsch mache und der web_only-Container den data-Container gar nicht verwendet.
Mache ich das richtig?
Hier ist meine Konfiguration.
Unter web_only.yml habe ich Folgendes hinzugefügt:
env:
# Stellen Sie sicher, dass das Locale im Container existiert. Möglicherweise müssen Sie es installieren.
LANG: en_US.UTF-8
DISCOURSE_DB_USERNAME: REMOVE
DISCOURSE_DB_PASSWORD: REMOVE
DISCOURSE_DB_HOST: REMOVE.ondigitalocean.com
DISCOURSE_DB_NAME: REMOVE
DISCOURSE_DB_PORT: 25060
DISCOURSE_DB_BACKUP_PORT: 25060
Wenn Sie eine Remote-Datenbank verwenden, müssen Sie keinen Datencontainer erstellen, der eine Datenbank enthält. Beachten Sie jedoch, dass sowohl PostgreSQL als auch Redis erforderlich sind (daher benötigen Sie möglicherweise den Datencontainer dafür).
Welcher Container war also aktiv? Wenn es sich um den app-Container handelte, dann nein: Sie verwenden eine veraltete Version von discourse-setup.
Führen Sie vor dem Weitermachen ein git pull durch, um sicherzustellen, dass Sie die neueste Version von discourse-setup verwenden.
Wenn der data- oder web-only-Container läuft, sollten Sie prüfen, was verhindert hat, dass der andere gestartet ist. Normalerweise startet der web-only-Container nicht, weil bereits ein Prozess (Webserver) auf Port 80/443 läuft.
Benchmark, wie ich bereits sagte: Ich habe einen Monat lang ein Standalone-Forum betrieben. Als ich ein neues einrichten wollte, wurden mehrere Wege untersucht:
Ich wollte einen separaten Standalone-Container auf demselben Server ausführen – leider ohne Erfolg.
Multisite mit Docker: verschiedene Container für Web und Datenbank, wie unter Multisite configuration with Docker beschrieben – ebenfalls ohne Erfolg.
Ihre Zwei-Container-Lösung – auch hier kein Erfolg.
Wenn Sie nur einen zweiten eigenständigen Container ausführen möchten, müssen Sie die YAML-Dateien so anpassen, dass sie ein anderes Verzeichnis und einen anderen Port verwenden. Möglicherweise müssen Sie auch Let’s Encrypt deaktivieren.
Nur zur Info: Wenn du die Leistung testen möchtest, solltest du das nicht auf einer Produktionsmaschine tun. Starte stattdessen einen separaten VPS und nutze diesen für die Benchmarks.
Der Versuch, zwei separate Instanzen von Discourse auf derselben Maschine zu betreiben, kann zu einer stark beschädigten Installation führen, was nicht ideal ist.
Dieser Befehl erstellt nur dann separate Daten- und Web-Container, wenn beim Ausführen keine app.yml vorhanden ist. Es werden nicht zwei Web-Container erstellt.
Ich glaube, ich hätte dieses Feature lieber nicht dokumentiert. Und tatsächlich hilft es auch nicht, zu einer Zwei-Container-Konfiguration zu wechseln, also gehört es wahrscheinlich gar nicht hierher.
Es muss nicht sehr detailliert sein, aber es könnte für alle, die mit einigen fortgeschrittenen Diskussionsabenteuern beginnen möchten, sehr nützlich sein.
Vielleicht schon. Es ist eine große Hilfe und ähnlich wie discourse-setup dient es einem sehr spezifischen Zweck: einer ganz standardmäßigen Neuinstallation. Meine Installations-Skripte nutzen es bereits seit geraumer Zeit. Es kann eine einfache Möglichkeit sein, auf zwei Container umzusteigen, wenn Sie bereit sind, ein Backup des alten Containers zu erstellen und auf dem neuen wiederherzustellen.
Meine Sorge war jedoch stets, dass es schwierig zu unterstützen sein würde, da Nutzer, die es nicht verstehen, es trotzdem verwenden und dann keine Dokumentation mehr nutzen können, da „rebuild app