Launcher run app zeigt Fehler beim Versuch, eine Sicherungskopie zu erstellen

Dies führt nur zu Fehlern beim Starten von Redis.

/var/discourse/launcher run app "echo 'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run' | rails c"

Wenn ich den Rails-c-Weg nehme, funktioniert das Backup. Aber diese Einzeiler sollte auch funktionieren – oder sie funktionierte schon 2020 (oder war es -22…)

Und was ich wirklich versuche, ist, nur einen Datenbank-Dump zu erhalten, verpackt, an einem Ort, an den ich ihn nach S3 verschieben kann. Und nein, ich möchte das nicht manuell tun, das Backup muss automatisiert werden. Und nein, einmal am Tag reicht nicht aus, weil ich keine 24-stündigen Daten verpassen möchte, wenn etwas schiefgeht.

Nur zur Verknüpfung der Referenz (aus dem Jahr 2020), falls sie aktualisiert werden muss:

Meinst du die Verbindung zu Redis? Was ist die genaue Fehlermeldung, die du siehst?

launcher run app führt einen Befehl in einem neuen Container-Kontext aus, daher wird Redis nicht ausgeführt. Dies würde nur funktionieren, wenn Redis extern ist.

Das Folgende sollte funktionieren, da es im Kontext des vorhandenen Containers ausgeführt wird:

docker exec -i app rails c <<<'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run'

Warum machst du das oben anstelle von z.B. dem einfacheren discourse backup --sql-only?

Du kannst Discourse auch anweisen, S3 direkt als Speicherort für Backups zu verwenden, wenn du möchtest.

2 „Gefällt mir“

Weil Docker und Container schreckliche Orte sind, an denen nichts funktioniert, wie crontab und nano :joy: Ich weiß, irgendwie, was ich tue, wenn ich /var/discourse sehe, aber nach ./launcher enter app bin ich völlig verloren. Deshalb sichert mein Mastodon-Server selbst, aber Discourse nicht (nun ja, einmal am Tag ja, aber trotzdem).

Ja, ich weiß, discourse backup macht, was ich will, es schickt den Dump sogar nach S3, aber ich weiß nicht, wie ich es zeitlich planen soll – wegen dieses schrecklichen und beängstigenden Container-Dings, das ein Betriebssystem im Betriebssystem ist.

Du hast einen Scheduler außerhalb des Containers verfügbar, richtig?

Du kannst ihn dort planen, z.B.:

# in die Host-Crontab einfügen
# Backup einmal alle 4 Stunden zur vollen Stunde ausführen
0 */4 * * * docker exec app discourse backup --sql-only
5 „Gefällt mir“

Das war so einfach, dass es fast der größte Antiklimax des Tages war. Und jetzt habe ich ein awscli, das völlig nutzlos ist.

docker exec ist hier der Schlüssel… jetzt habe ich eine solide Sache, mit der ich googeln kann.

Danke!

3 „Gefällt mir“

Oh ja… dieser Fehler:

Couldn't connect to Redis
bundler: failed to load command: pry (/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/pry)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-4.8.1/lib/redis/client.rb:398:in `rescue in establish_connection': Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError)

Und danach kam eine meilenlange Liste, bei der jede Zeile mit from begann und es unzählige verschiedene Ruby-Dinge, Gems usw. gab. Das sah nicht sehr interessant aus.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.