Umzug vom eigenständigen Container zu separaten Web- und Datencontainern

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:

  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: REMOVE
  DISCOURSE_DB_PASSWORD: REMOVE
  DISCOURSE_DB_HOST: xxx.ondigitalocean.com
  DISCOURSE_DB_NAME: REMOVE
  DISCOURSE_DB_PORT: 25060
  DISCOURSE_DB_BACKUP_PORT: 25060
  DISCOURSE_REDIS_HOST: data

Unter data.yml

Ich habe postgres.template.yml entfernt.

templates:
#  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"

Ich habe auch 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).

1 „Gefällt mir“

aber hier habe ich nur einen Container ohne Fehler ausgeführt

Ich weiß eigentlich nicht, was du unter „zwei Containern

1 „Gefällt mir“

Was ich mit Container meine: Sie können zwei laufende Container sehen, wenn Sie auf der Host-Maschine Folgendes eingeben:

docker ps

Und zweitens: Bei diesem Befehl mit den zwei Containern habe ich nicht gefunden, wo man den Domainnamen festlegt.

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.

Ja, App
Oh nein, ich habe heute den Quellcode von GitHub geklont.

Ich habe das persönlich noch nicht ausprobiert, aber da @pfaffman das Genie ist, das dies entwickelt hat, kann er vielleicht weiterhelfen.

Wenn ich mir den discourse-setup-Code auf GitHub ansehe, fällt mir nichts Offensichtliches auf, das dafür sorgen könnte, dass es nicht funktioniert.

Auf welchem Betriebssystem läuft dein Server?

Server mit Ubuntu
Ich habe einen Standalone-Container erfolgreich ausgeführt.
Derzeit versuche ich diese Methode: Success - New Multisite Install on Dedicated server using ServerPilot, Nginx and Apache

Versuchen Sie, ein Multisite- oder ein Multi-Container-Setup zu realisieren?

Benchmark, wie ich bereits sagte: Ich habe einen Monat lang ein Standalone-Forum betrieben. Als ich ein neues einrichten wollte, wurden mehrere Wege untersucht:

  1. Ich wollte einen separaten Standalone-Container auf demselben Server ausführen – leider ohne Erfolg.
  2. Multisite mit Docker: verschiedene Container für Web und Datenbank, wie unter Multisite configuration with Docker beschrieben – ebenfalls ohne Erfolg.
  3. Ihre Zwei-Container-Lösung – auch hier kein Erfolg.
  4. Success - New Multisite Install on Dedicated server using ServerPilot, Nginx and Apache – diesen Ansatz versuche ich gerade, vielleicht funktioniert er.

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.

Nachdem all das behoben ist, möchte ich ein paar Tutorials für Anfänger schreiben.

1 „Gefällt mir“

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.

1 „Gefällt mir“

Bevor ich diesen Befehl ausführe, scheint bereits eine app.yml vorhanden zu sein.

Ich denke, das ist sehr wichtig. Sollte das nicht in den Eröffnungspost und möglicherweise auch auf GitHub aufgenommen werden?

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.

1 „Gefällt mir“

Vielleicht ein eigenes howto?

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.

2 „Gefällt mir“

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

3 „Gefällt mir“