/var/discourse/launcher run app "echo 'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run' | rails c"
Если я запускаю rails c вручную, резервное копирование работает. Но эта однострочная команда тоже должна работать — или она работала ещё в 2020 году (или, может, в 2022…)
А что я на самом деле пытаюсь сделать, так это получить дамп базы данных, упакованный в таком месте, куда я смогу его переместить в S3. И нет, я не хочу делать это вручную — резервное копирование должно быть автоматизированным. И нет, одного раза в день недостаточно, потому что я не хочу терять целый день работы, если что-то пойдёт не так.
Вы имеете в виду подключение к Redis? Какое именно сообщение об ошибке вы видите?
Команда launcher run app выполняет команду в контексте нового контейнера, поэтому Redis не будет запущен. Это сработает только в том случае, если Redis работает во внешней среде.
Следующая команда должна сработать, так как она выполняется в контексте существующего контейнера:
docker exec -i app rails c <<<'BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run'
Зачем вы делаете это таким способом, а не используете более простой вариант discourse backup --sql-only?
Вы также можете настроить Discourse так, чтобы он использовал S3 напрямую в качестве места для хранения резервных копий, если хотите.
Потому что Docker и контейнеры — это ужасные места, где ничего не работает, например, crontab и nano Я в общих чертах понимаю, что делать, когда вижу /var/discourse, но после ./launcher enter app я совершенно теряюсь. Вот почему мой сервер Mastodon делает резервные копии сам, а Discourse — нет (ну, раз в день всё же делает, но всё равно).
Да, я знаю, что discourse backup делает то, что мне нужно, он даже отправляет дамп в S3, но я не знаю, как настроить расписание — из-за этого ужасного и пугающего контейнера, который представляет собой ОС внутри ОС.
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)
А после этого был список длиной в милю, где каждая строка начиналась со слова from, и там было миллион разных ruby-объектов, гемов и прочего. Выглядело это не очень интересно.