Launcher run app dà errore quando si tenta il backup

Questo mi dà solo errori, all’avvio di Redis.

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

Se prendo la strada di rails c, il backup funziona. Ma quella riga singola dovrebbe funzionare anche lei — o funzionava già nel 2020 (o era il -22…)

E quello che sto davvero cercando di fare è ottenere solo un dump del database, compresso, in un posto dove posso spostarlo su S3. E no, non voglio farlo manualmente, il backup deve essere automatizzato. E no, una volta al giorno non è sufficiente, perché non voglio perdere 24 ore di dati se qualcosa va molto male.

Sto solo aggiungendo un link al riferimento (del 2020) nel caso debba essere aggiornato:

Intendi connetterti a redis? Qual è l’errore effettivo che vedi?

launcher run app esegue un comando in un nuovo contesto di container, quindi redis non sarà in esecuzione. Questo funzionerebbe solo se redis è esterno.

Quanto segue dovrebbe funzionare poiché viene eseguito nel contesto del container esistente:

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

Perché stai facendo quanto sopra invece di, ad esempio, il più semplice discourse backup --sql-only?

Puoi anche dire a Discourse di utilizzare direttamente S3 come posizione per i backup, se lo desideri.

2 Mi Piace

Poiché Docker e i container sono posti orribili, dove niente funziona, come crontab e nano :joy: So, più o meno, cosa fare quando vedo /var/discourse ma dopo ./launcher enter app sono completamente perso. Ecco perché il mio server Mastodon esegue il backup da solo, ma Discourse no (beh, una volta al giorno sì, ma comunque).

Sì, so che discourse backup fa quello che voglio, invia persino il dump a S3, ma non so come programmarlo — a causa di quella cosa orribile e terrificante del container, che è un sistema operativo dentro un sistema operativo.

Hai uno scheduler all’esterno del container disponibile, giusto?

Puoi pianificarlo lì, ad esempio:

# inserisci nel crontab dell'host
# esegui il backup ogni 4 ore all'ora esatta
0 */4 * * * docker exec app discourse backup --sql-only
5 Mi Piace

È stato così facile che è stato quasi il più grande anticlimax della giornata. E ora ho un awscli completamente inutile.

docker exec è la chiave qui… ora ho una cosa solida su cui iniziare a cercare su Google.

Grazie!

3 Mi Piace

Oh sì… quell’errore:

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)

E dopo c’era una lista lunga un miglio dove ogni riga iniziava con from e c’erano un milione di cose diverse di ruby, gemme, ecc. Non sembrava molto interessante.

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