Cela me donne seulement des erreurs, au démarrage de Redis.
/var/discourse/launcher run app "echo 'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run' | rails c"
Si je passe par la route rails c, la sauvegarde fonctionne. Mais cette commande unique devrait aussi fonctionner — ou elle fonctionnait déjà en 2020 (ou était-ce -22…)
Et ce que j’essaie vraiment de faire, c’est d’obtenir juste une sauvegarde de la base de données, compressée, dans un endroit où je peux la déplacer vers S3. Et non, je ne veux pas le faire manuellement, la sauvegarde doit être automatisée. Et non, une fois par jour n’est pas suffisant, car je ne veux pas perdre l’équivalent de 24 heures de données si quelque chose tourne mal.
Voulez-vous dire la connexion à Redis ? Quelle est l’erreur exacte que vous voyez ?
launcher run app exécute une commande dans un nouveau contexte de conteneur, donc Redis ne sera pas en cours d’exécution. Cela ne fonctionnerait que si Redis est externe.
Ce qui suit devrait fonctionner car il s’exécute dans le contexte du conteneur existant :
docker exec -i app rails c <<'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run'
Pourquoi faites-vous cela plutôt que, par exemple, le plus simple discourse backup --sql-only ?
Vous pouvez également indiquer à Discourse d’utiliser S3 directement comme emplacement pour les sauvegardes, si vous le souhaitez.
Parce que Docker et les conteneurs sont des endroits horribles, où rien ne fonctionne, comme crontab et nano Je sais, plus ou moins, ce que je fais quand je vois /var/discourse mais après ./launcher enter app je suis totalement perdu. C’est pourquoi mon serveur Mastodon se sauvegarde, mais pas Discourse (enfin, une fois par jour oui, mais quand même).
Oui, je sais que discourse backup fait ce que je veux, il envoie même le dump vers S3, mais je ne sais pas comment le planifier — à cause de cette chose horrible et terrifiante de conteneur, qui est un OS dans un OS.
Vous avez un planificateur en dehors du conteneur disponible, n’est-ce pas ?
Vous pouvez le planifier là, par exemple :
# mettre dans la crontab de l'hôte
# exécuter la sauvegarde une fois toutes les 4 heures à l'heure pile
0 */4 * * * docker exec app discourse backup --sql-only
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)
Et après, il y avait une liste longue comme le bras où chaque ligne commençait par from et il y avait une tonne de choses différentes en Ruby, des gems, etc. Ça n’avait pas l’air très intéressant.