Statischer Export einer Discourse-Seite während des Upgrades von Discourse bereitstellen

Ich betreibe derzeit zwei separate Discourse-Foren, die jeweils auf einer eigenen Scaleway-Instanz gehostet und wie folgt aktualisiert werden:

# Discourse Docker-Setup aktualisieren
cd /var/discourse
git pull origin master

# Discourse neu erstellen
/var/discourse/launcher rebuild app

Dadurch wird das Forum jedes Mal für etwa 5–15 Minuten heruntergefahren.

Eine der Seiten befindet sich hinter dem Cloudflare-Proxy und stellt daher problemlos ihren Offline-Cache bereit. Die andere Seite verwendet jedoch kein Cloudflare.

Ich frage mich, ob Discourse eine statische Site nur mit öffentlichen Threads für anonyme Benutzer exportieren könnte, bei der Interaktionsbuttons deaktiviert sind und oben ein Banner mit der Meldung „Diese Website befindet sich derzeit im Nur-Lese-Modus, da Aktualisierungen durchgeführt werden.

1 „Gefällt mir“

Wenn die DNS-Verwaltung über Cloudflare erfolgt (auch ohne Proxy), erfolgt die Aktualisierung in der Regel innerhalb weniger Sekunden. Während der Aktualisierung können Sie die Domain auf einen anderen Server umleiten (z. B. eine Wartungsseite auf Netlify/Vercel/Firebase/Surge usw., bei der alle Pfade auf eine index.html-Datei verweisen).

Ich habe es noch nicht ausprobiert, aber es könnte möglich sein, vorübergehend einen anderen Backend-Dienst über resolveOverride in einem Cloudflare Worker (“serverless”-Funktion) bereitzustellen.

1 „Gefällt mir“

Ja, sei es eine DNS-Änderung oder das Starten eines temporären Docker-Nginx-Containers, der am selben Port lauscht und etwas bedient – das ist der einfache Teil.

Der schwierigste Teil daran ist derzeit ein statischer Export mit deaktivierter Interaktivität und einem hinzugefügten Banner, der Themen-, Beitrags-, Kategorien- und Indexseiten berücksichtigt (die Suche kann außer Betrieb sein). Dann gilt es, diesen Ersatz in den Upgrade-Prozess zu integrieren – was jedoch recht einfach ist.

Bei der Suche in den Foren nach „statischer Export

Wenn Sie eine Zwei-Container-Installation betreiben, beträgt die Ausfallzeit weniger als eine Minute. Oder wenn Sie bereit sind, einen Load Balancer zu betreiben, können Sie sie auf null reduzieren. Das ist einfacher als das, was Sie beschreiben.

3 „Gefällt mir“

Ja, das glaube ich auch. Können Sie mir die empfohlenen Optionen mit zwei Containern nennen?

(Move from standalone container to separate web and data containers), aber Sie müssen möglicherweise suchen, indem Sie andere heranziehen

Informieren Sie sich auch über SKIP_POST_DEPLOYMENT_MIGRATIONS=1. Kurz gesagt, setzen Sie dies beim Neuaufbau des Bed-Containers, um zu verhindern, dass die Datenbank für den bestehenden Container beschädigt wird, und migrieren Sie danach erneut, ohne dass der neue Container läuft.

2 „Gefällt mir“