Move from standalone container to separate web and data containers

Ich gehe davon aus, dass es nicht zwingend notwendig ist, es herunterzuladen. Die meisten Leute betreiben eine einzelne Cloud-Instanz, die möglicherweise über einen S3-Bucket für Backups verfügt oder auch nicht. Das Herunterladen des Backups wäre für diese Gruppe die einzige Möglichkeit, ein Off-Site-Backup zu erstellen, wie Sie es erwähnt haben.

Ich würde sogar so weit gehen, ein zusätzliches Backup-System bei einem völlig anderen Anbieter einzurichten, insbesondere nach dem, was kürzlich mit diesem Open-Source-Entwickler passiert ist. Unabhängig von der Gültigkeit ist es eine großartige Warnung, ein wöchentliches oder monatliches Backup an einem völlig separaten Speicherort/Anbieter zu haben.

1 „Gefällt mir“

Danke @pfaffman für das Hinzufügen, jetzt wirklich schmerzlos! (außer beim Wiederherstellen eines großen Backups, was immer ein wenig angespannt und langwierig ist, egal wie die Einrichtung ist).

Übrigens glaube ich, dass dieser Pfad falsch ist: sollte web-only (standardmäßig) sein, denke ich?:

volumes:
  - volume:
      host: /var/discourse/shared/web-only
      guest: /shared
  - volume:
      host: /var/discourse/shared/web-only/log/var-log
      guest: /var/log

PS Ich habe den OP entsprechend bearbeitet

1 „Gefällt mir“

Ja. web-only und das ist ein wenig verwirrend, wenn in jedem anderen Kontext web_only ist. Aber vielleicht ist etwas anders, wenn es sich um ein Verzeichnis oder einen Container handelt.

Was weiß ich… Ich habe gerade 4 Stunden mit SearXNG verbracht, und das hätte eine 5-Minuten-Aufgabe sein sollen (ich mag Docker-Dinge wirklich nicht).

Bearbeitung und Off-Topic

Wirklich :flushed_face: er und ck sind verbotene Wörter? Es wurde uns in der Schule als nicht beleidigendes Wort beigebracht. Also hatten sie offensichtlich Unrecht :joy:

1 „Gefällt mir“

Ich glaube, das wurde hinzugefügt, als die beobachteten Wörter zum ersten Mal getestet wurden und nie entfernt wurden.

Ja. Ich bin mir da oft unsicher. Tatsächlich glaube ich, dass das wahrscheinlich der Grund ist, warum ich einmal, als ich versuchte, Dinge umzubenennen, um von Single auf Double-Container umzusteigen, das Unterstrich/Bindestrich-Ding falsch gemacht habe und es fehlschlug.

Und schlimmer noch, ich bin mir ziemlich sicher, dass es meine Schuld ist. Ich habe einen Fehler bekommen, als ich die Zwei-Container-Option in discourse-setup erstellt habe (vielleicht konnten Container keine Unterstriche haben?) Ruby mag Unterstriche in Dateinamen, also vielleicht habe ich dort einen Unterstrich verwendet? Ich glaube, das ist es – und ich glaube, web_only kann nicht als Docker-Containername funktionieren, da diese auch gültige Hostnamen sein müssen.

1 „Gefällt mir“

Ich bevorzuge Bindestriche in Verzeichnispfaden, daher ist alles in Ordnung, wie es ist, und Unterstriche im Containernamen sind ehrlich gesagt sinnvoll, also belassen Sie es dabei.

Übrigens denke ich, dass es auf Meta einen Titel oder ein selbstzertifiziertes Abzeichen für diejenigen geben sollte, die das Zwei-Container-Setup rocken :wink: Sobald Sie ein Jahr hier sind, denke ich, dass es für Ihre Standardinstallationen obligatorisch sein sollte, migriert zu werden. :rocket:

2 „Gefällt mir“

Wenn es nicht so viel vorhandene Dokumentation über die Single-Container-Einrichtung gäbe, würde ich fast argumentieren, dass sie zum Standard werden sollte, obwohl es Werkzeuge bräuchte, um die Leute wissen zu lassen, dass die Datenbank möglicherweise Aufmerksamkeit benötigt oder so etwas.

Ich sehe oft viele Leute, die mit Two-Container-Installationen unglücklich sind und sich davor fürchten. (Kürzlich wollte jemand, dass die Two-Container-Installation, die ich bei der Einrichtung erstellt habe, in einen Single-Container verschoben wird, zum Beispiel.) Es ist so sehr selten, dass es ein Problem ist, und das eine Mal, dass es Probleme verursacht, spart es tatsächlich etwas Aufwand, da es einfach ist, ein Postgres-Upgrade aufzuschieben, bis man bereit ist, es durchzuführen. Man kann ein PG-Upgrade normalerweise eine ganze Weile aufschieben (außer wenn das KI-Plugin zu Core hinzugefügt wurde und diese Erweiterung erforderte).

2 „Gefällt mir“

Meine Backups sind nach diesem Fehler fehlgeschlagen:

[2025-09-09 09:34:50] Creating archive: blah-forum-2025-09-09-093246-v20250828181952.tar.gz
[2025-09-09 09:34:50] Making sure archive does not already exist...
[2025-09-09 09:34:50] Creating empty archive...
[2025-09-09 09:34:50] EXCEPTION: tar --create --file /var/www/discourse/public/backups/default/blah-forum-2025-09-09-093246-v20250828181952.tar --files-from /dev/null
tar: /var/www/discourse/public/backups/default/mvertigo-org-vestibular-disorders-support-forum-2025-09-09-093246-v20250828181952.tar: Cannot open: Permission denied
tar: Error is not recoverable: exiting now

Wenn ich mir die Berechtigungen aus dem web_only-Container ansehe:

/var/www/discourse/public/backups# ls -l
total 4
drwxr-xr-x 2 root root 4096 Sep  6 12:37 default

Wenn ich mir eine andere Instanz ansehe, ist der Besitz anders:

/var/www/discourse/public/backups# ls -l
total 4
drwxr-xr-x 2 discourse www-data 4096 Sep  9 03:46 default

Was ist hier schief gelaufen und was sollte ich an diesem Verzeichnis für den web_only-Container ändern – sollte es dasselbe sein wie bei einer Standardinstallation?

Kurz gesagt, versuche es vielleicht mit:

docker exec -it web_only bash
chown  -R discourse:www-data /shared/backups

Und mehr Worte.

Ohne nachzusehen, würde ich als Nächstes versuchen, den Datencontainer neu zu erstellen, in der Hoffnung, dass die vorgenommene Änderung auch am Datencontainer vorgenommen wurde (oder ihn betrifft).

Die schlechte Ratschlagsantwort ist, ...backups/default für alle schreibbar zu machen und die Eigentümerschaft des Backups zu sehen.

Ich denke also, was Sie tun möchten, ist, default im Web-Container (das ist derjenige, der die Backups durchführt) auf discourse.www-data zu ändern.

Hier ist ein aktueller Single-Container:

root@forum.mbse-capella.org(app):~$ docker exec -it app  bash
root@new-app:/# grep www /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
root@new-app:/# grep discourse /etc/passwd
discourse:x:1000:1000::/home/discourse:/bin/bash

Zu bestimmten Zeiten in der Vergangenheit würde der Build-Prozess alle Dateien chownen, aber das kann sehr lange dauern, daher glaube ich, dass dies irgendwann entfernt wurde (das ist mehr ein Gefühl als etwas, das auf dem Beachten von Commits basiert).

1 „Gefällt mir“

ist das dasselbe wie ./launcher enter web_only?

Größtenteils. ./launcher wird zuerst einen Git-Pull ausführen (zumindest dachte ich das, aber vielleicht nicht?) und Sie werden eher eine Tab-Vervollständigung für Docker als für ./launcher haben.

1 „Gefällt mir“

Es platziert Sie auch in der Root, während der Launcher Sie im discourse-Verzeichnis platziert

1 „Gefällt mir“
/var/www/discourse/public/backups# ls -l
total 4
drwxr-xr-x 2 discourse www-data 4096 Sep  6 12:37 default

Das scheint die richtige Anpassung zu sein, mal sehen, wie wir mit dem nächsten Backup zurechtkommen, danke!

1 „Gefällt mir“

Sie können jetzt einen von der Befehlszeile oder der Benutzeroberfläche ausführen, um zu sehen, ob es funktioniert hat.

Außerdem, wenn ich cleverer gewesen wäre:

docker exec -it web_only bash -c "chown -R discourse:www-data /shared/backups"
1 „Gefällt mir“

Ich war geduldig und habe auf den geplanten Job gewartet (aber das zu dokumentieren ist sehr nützlich!) und das hat anscheinend funktioniert, vielen Dank für deine Hilfe @pfaffman

So unterscheiden wir uns.

Ja. Früher gab es ein chown, das bei jedem Rebuild lief, da bin ich mir ziemlich sicher. Es kann eine Weile dauern und ist fast immer überflüssig (außer wenn es das nicht ist). Es hat nichts mit einem oder zwei Containern zu tun. Ich denke, es hat damit zu tun, dass von einer Version von Debian für das Basis-Image zu einer anderen Version gewechselt wird und die neue Version andere Benutzerzuordnungen hat als die alte.

1 „Gefällt mir“

Ist das docker_manager-Plugin in diesem Setup nicht nützlich – es sagt mir immer, ich soll die App neu erstellen!

Ich bin mir nicht sicher, was „dies“ ist, aber sowohl dieses Thema als auch das, auf das ich mich beziehe, sind für eine Standardinstallation, sodass docker_manager wie gewohnt funktioniert.

Docker_manager hat nichts mit dem Prozess des Umzugs auf einen anderen Server zu tun, da Sie einen neuen Container erstellen müssen.

Es sollte Sie zwingen, eine neue App zu erstellen, wenn sich das Basis-Image ändert, was meiner Meinung nach in letzter Zeit ziemlich oft passiert ist. Ehrlich gesagt, habe ich die Mechanismen, die dort am Werk sind, noch nicht ganz verstanden.

So wie ich das herausgefunden habe, war dies nach einem Bootstrap von web_only und dem Ersetzen (Zerstören, Starten), dass ich nach einer einzelnen Plugin-Änderung ein Update durchführen wollte, nur um aufgefordert zu werden, die App neu zu erstellen!

1 „Gefällt mir“