App.yml freigegebene Volumes für ein Zwei-Website-Setup

Ich möchte meine app.yml so anpassen, dass ich eine weitere Discourse-Instanz starten kann (eigener Container, eigene Datenbank, alles separat denkbar – für Portabilität) auf derselben Maschine (hinter nginx laufend).

Meine erste Einrichtung sieht also so aus (die wichtigen Teile):

## app.yml für site01
volumes:
  - volume:
      host: /var/discourse_site01/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse_site02/shared/standalone/log/var-log
      guest: /var/log

.. und das funktioniert hervorragend – die Instanz ist online und alles ist in Ordnung. Jetzt möchte ich eine weitere Discourse-Instanz hosten, wofür ich die gemeinsam genutzten Volumes in einer anderen app.yml wie folgt definiert habe:

## app.yml für site02
volumes:
  - volume:
      host: /var/discourse_site02/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse_site02/shared/standalone/log/var-log
      guest: /var/log

Gibt es bei dieser zweiten Konfiguration irgendwelche Fallstricke? Da ich es auf einem Produktionsserver laufen lasse, wollte ich noch einmal überprüfen, ob diese app.yml korrekt ist.

Ich empfehle dringend, dies vorher auf einem Klon oder einer Staging-Kopie zu testen, niemals direkt auf einem Live-Server.

Können Sie den Einsatz von nginx näher erläutern? Gibt es weitere Produktionsdienste auf derselben Maschine?

@Stephen: Nginx fungiert lediglich als Reverse-Proxy für die erste Discourse-Instanz. Nichts Kompliziertes. Tatsächlich habe ich die Einrichtung genau so durchgeführt, wie sie auf meta.discourse beschrieben ist, um Nginx als Front-End-Server einzurichten.

Auf dem Server laufen KEINE anderen Dienste. Da es sich um einen Produktionsserver handelt, habe ich alles in einem komplett separaten Host-Ordner discourse_site02 eingerichtet. Macht das Sinn?

Siehst du irgendwelche Probleme in der von mir beschriebenen app.yml? Oder denkst du, dass etwas mit meiner Konfiguration nicht stimmt?

Gibt es einen bestimmten Grund, warum Sie keine Multisite-Installation mit zwei Containern verwenden? Ich denke nicht, dass Sie dabei viel an Portabilität verlieren. Der schnellste Weg, Instanzen zwischen Servern zu verschieben, besteht darin, ein Backup zu migrieren. Falls Sie eine Instanz verschieben müssten, würden Sie einfach einen neuen Server hochfahren, die alte Instanz auf schreibgeschützt setzen, die DNS-Einträge umleiten und das Backup wiederherstellen. Mit einem DNS-Dienst mit kurzer TTL wie Cloudflare kann eine kleine Website in wenigen Minuten migriert werden. Nutzer würden nur einen kurzen Zeitraum mit schreibgeschütztem Zugriff erleben, ohne dass Inhalte verloren gehen. Es ist viel effizienter, Ressourcen auf diese Weise aufzuteilen. So vermeiden Sie, zwei Datenbankserver und zwei Webserver in separaten Containern zu betreiben, und es entfällt vollständig die Notwendigkeit eines Nginx-Reverse-Proxys.

@Stephen: Ja, ich habe den von dir gezeigten Link gesehen, aber aus Gründen der einfachen Einrichtung (wir sind ein kleines Team mit wenig Erfahrung) möchte ich es so machen, wie ich es beschrieben habe – das führt zu zwei Datenbanken und zwei Webservern usw. Tatsächlich ist das genau das Setup, das ich bevorzuge.

Abgesehen von den Ineffizienzen, die du angesprochen hast, gibt es sonst noch Fallstricke?
Sind die beiden von mir gezeigten app.yml-Dateien korrekt?

Vielen Dank für deine Zeit und die großartige Software :smile:

Viele Grüße

@Stephen: Ich frage mich nur, denkst du, meine Konfiguration sieht für das 2-Container-Setup korrekt aus?

Wie gesagt, ich möchte keine Ressourcen sparen oder effizient sein :slight_smile: Ich möchte nur wissen, ob es in Ordnung ist, dies so zu betreiben, vorausgesetzt, es gibt keine Fallstricke, die mich später erwischen.