Сбой развертывания - exec_command.rb:117:in `spawn

Привет, ребята.
Прежде чем я захламлю здесь длинными логами, вот те, что я вставил ниже.
Развёртывание каждый раз завершается неудачей именно так. Если кто-то может поделиться предложением относительно того, в чём проблема и как её исправить, я буду очень признателен.

I, [2023-06-20T14:08:40.997134 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-06-20T14:08:43.104608 #1]  INFO -- : docker_manager уже находится в последней совместимой версии

I, [2023-06-20T14:08:43.104825 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Redis::CommandError: READONLY Вы не можете выполнять запись на реплике только для чтения. script: bcec1d9b3bbcfb089dc0b7316771be9f011872b6, on @user_script:8.
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis/client.rb:162:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis.rb:270:in `block in send_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis.rb:269:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis.rb:269:in `send_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis/commands/scripting.rb:110:in `_eval'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/redis-4.8.1/lib/redis/commands/scripting.rb:97:in `evalsha'
/var/www/discourse/lib/discourse_redis.rb:273:in `eval'
/var/www/discourse/lib/distributed_mutex.rb:82:in `get_lock'
/var/www/discourse/lib/distributed_mutex.rb:50:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/lib/tasks/db.rake:221:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)
I, [2023-06-20T14:08:45.555646 #1]  INFO -- : 


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершилась неудачей с кодом возврата #<Process::Status: pid 687 exit 1>
Место ошибки: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
выполнение завершилось неудачей с параметрами {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
загрузка завершилась с кодом выхода 1
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть больше одной.
./discourse-doctor может помочь диагностировать проблему.

Ох… это Redis — новичку потребовалось время, чтобы понять, верно?
Но если да, то как развернуть его так, чтобы это называлось «резервная реплика»? — да, именно такой экземпляр Discourse я имею в виду.

Это стандартная установка, установка для разработки или что-то другое? Вы собирали Redis самостоятельно? При стандартной установке Redis должен быть внутри контейнера и работать без проблем.

Привет.
Я не упомянул — я предполагал и по-прежнему считаю, что то, что я пытаюсь сделать, не является чем-то необычным: и Redis, и PostgreSQL находятся вне контейнера Discourse.
Возможно ли развернуть Discourse более-менее стандартным способом как «резервный» — примерно так же, как Redis, чтобы такая инициализация/развёртывание контейнера не приводила к ошибке?

Да, но вам придётся самостоятельно отлаживать свой Redis-сервер.

Ошибка следующая:

You can't write against a read only replica

Похоже, что вы подключились к реплике, а писать нужно в основной сервер. Если вы пытаетесь выполнить переключение при отказе, вам нужно выяснить, как перевести реплику в активный режим и отключить её роль реплики.

За помощью в этом вопросе вам придётся обратиться в другое место.

Да. Но проблема не в переключении на резервный узел, по крайней мере пока.
Здесь я пытаюсь запустить такой контейнер Discourse в режиме «резервный/вторичный» на другом, отдельном узле/системе, где и Redis, и PostgreSQL являются репликами только для чтения. Как это сделать?

Ошибка говорит сама за себя, и очевидный вопрос — для меня, так как это моя первая попытка работы с Discourse, — как развернуть и запустить такой контейнер в режиме «горячего резерва», если это вообще возможно.

Вам нужно настроить Discourse на использование основного сервера. В случае сбоя используйте DNS или HAProxy для переключения на резервный.

Это не проблема самого Discourse. Если вы хотите узнать, как настроить высокодоступную инфраструктуру с Redis и PostgreSQL, вам нужно искать информацию в других источниках.