Launcher运行应用程序时尝试备份出现错误

这导致我出现错误,启动 Redis。

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

如果我走 rails c 路线,备份就可以工作。但那一行命令也应该起作用——或者它在 2020 年(或者是不是 -22……)就起作用了。

而我真正想做的是只获取数据库转储,打包好,放到我可以移动到 S3 的地方。而且,我不想手动完成,备份必须自动化。而且,一天一次是不够的,因为如果出现严重问题,我不想丢失价值 24 小时的数据。

Just cross-linking the reference (from 2020) in case it should be updated:

您是指连接到 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 用作备份位置。

2 个赞

因为 Docker 和容器太糟糕了,什么都用不了,比如 crontab 和 nano :joy: 我知道,大概,当我看到 /var/discourse 时我会做什么,但在 ./launcher enter app 之后我就完全迷失了。这就是为什么我的 Mastodon 服务器会自动备份,但 Discourse 不会(嗯,一天一次是的,但仍然如此)。

是的,我知道 discourse backup 能做我想做的事,它甚至会将转储发送到 S3,但我不知道如何安排它——因为那个可怕而令人恐惧的容器东西,它是一个操作系统中的操作系统。

你有一个在容器外部可用的调度程序,对吗?

你可以在那里安排它,例如:

# 放入主机 crontab
# 每 4 小时在整点运行一次备份
0 */4 * * * docker exec app discourse backup --sql-only
5 个赞

这太容易了,简直是今天最大的扫兴之事。现在我有一个完全没用的 awscli。

docker exec 是这里的关键……现在我有一个可以开始谷歌搜索的扎实的东西了。

谢谢!

3 个赞

哦,对了……那个错误:

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 项目、gem 等等。看起来没什么意思。

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