Rebuild friert ein, wenn versucht wird, den Container zu stoppen

Ich habe heute die erste Meldung „You are running an old version of the Discourse image. Upgrades via the web UI are disabled until you run the latest image" erhalten und befürchte, dass meine Installation beschädigt ist.

Ich habe die Anweisungen befolgt und jeden Befehl mit sudo ausgeführt, da mein Hosting-Anbieter die Erstellung von Root-Benutzern nicht zulässt.

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

Danach musste ich vor dem pull erneut sudo git stash ausführen, da es einen Fehler bezüglich Konflikten gab.

Alles schien zunächst in Ordnung zu verlaufen (ich habe es über eine Stunde laufen lassen), doch dann wurde meine Terminal-Sitzung beendet (Fehler: „broken pipe"). Um das Problem zu umgehen, habe ich ClientAliveInterval auf dem Server auf 60 gesetzt (dies war zuvor auskommentiert), den Server neu gestartet und es erneut versucht.

Wenn das Rebuild-Skript jetzt ausgeführt wird, stürzt es ab, sobald versucht wird, den Docker-Container zu stoppen.

Ich habe versucht, dies zu umgehen, indem ich vor dem Ausführen des Rebuild-Skripts docker kill <id> ausgeführt habe, doch derselbe Absturz tritt auf (CPU-Auslastung von 100 % für etwa 15 Minuten … danach stundenlang nichts).

Nach einem Neustart kommt die Seite zwar wieder hoch, aber ich kann sie nicht aktualisieren (der UI-Updater meldet weiterhin, dass ich ein altes Discourse-Image verwende).

Jeder Ratschlag wird dankend angenommen.

Ohne die Ausgabe des Builds zu sehen, ist es ziemlich schwer zu erraten.

Sie könnten versuchen, tmux (oder ähnliches) zu verwenden, um die Sitzung offen zu halten, wenn die Verbindung unterbrochen wird (Sie können mit tmux attach wieder eine Verbindung zur Sitzung herstellen).

Vielleicht werfen Sie einen Blick auf das PostgreSQL 13-Update?

Danke, Jay, ich glaube, ich habe das Problem gefunden.

Mein VPS-Anbieter webdock.io (übrigens sehr empfehlenswert) unterstützt ZFS nicht, da er es auf Host-Ebene verwendet; verschachteltes ZFS ist daher keine Option. Außerdem wurde mir von overlay2 für meine Installation abgeraten und empfohlen, die Datei launcher so zu bearbeiten, dass der vfs-Speichertreiber enthalten ist, der standardmäßig nicht vorhanden ist.

171‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎ Storage Driver: (vfs|aufs|zfs|overlay2)
‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‏‏‎‎‏⬆️

Ich vermute, dass sudo git pull dies überschrieben hat und ich dann versucht habe, mit dem falschen Speichertreiber neu aufzubauen?

Ich habe alles zurückgesetzt, die Datei launcher erneut bearbeitet und dann rebuild app ausgeführt – jetzt funktioniert alles wieder.

cd /var/discourse
sudo git stash
sudo git pull
sudo nano launcher 

‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ dann Zeile 171 bearbeiten und vfs hinzufügen

sudo ./launcher rebuild app

Hallo @ajmuir,
ich weiß, dass du dein Problem vor über einem Jahr gelöst hast, aber ich wollte meinen Senf zu dieser Diskussion hinzufügen und auch neuen Benutzern, die diesen Thread finden, den richtigen Weg weisen.

Webdock empfiehlt (jetzt) die Verwendung von fuse-overlayfs als Docker-Speichertreiber: How to change the Docker storage driver – Webdock

Grund dafür ist, dass vfs eine hohe Festplattenauslastung verursacht.

Die Verwendung von fuse-overlayfs für Docker führt jedoch zu einer Warnung oder einem Fehler auf der Seite des Discourse-Launchers, da es kein empfohlener Treiber ist.

Ich habe detaillierte Anweisungen, wie du dieses Problem lösen kannst, in diesem Beitrag auf meinem Blog: Deploying Discourse on a Webdock server

Du kannst es auch so machen, wie du es getan hast, indem du den installierten Treiber zur egrep-Anweisung hinzufügst.

Und warum sagst du, dass Webdock die Erstellung von Root-Benutzern nicht erlaubt?
Du kannst einfach mit sudo su zu root wechseln und danach die Befehle aus der Discourse-Installationsanleitung ausführen.