Проблема при пересборке

Вот моя конфигурация плагинов с использованием Docker 27.0

cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/paviliondev/discourse-locations.git

Выполняю ./launcher rebuild app

Получаю следующую ошибку для плагина Locations:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 449 e
xit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migra
te'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Прошу дать совет.

Попробуйте выяснить, какая миграция не удалась.

в оригинальном посте, как я уже указывал
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate’ failed with return #<Process::Status: pid 449 exit 1>

А чуть выше в логах выводятся миграции по мере их выполнения, так что вам нужно найти ту, которая вызвала проблему.

oO0OoO0OoO0Oo Redis запускается oO0OoO0OoO0Oo
Версия Redis=7.0.15, разрядность=64, коммит=00000000, изменён=0, pid=447, только что запущен
Конфигурация загружена

  • монотонные часы: POSIX clock_gettime
    Предупреждение: Не удалось создать сокет для прослушивания TCP сервера *:6379: bind: Адрес уже используется
    Не удалось начать прослушивание порта 6379 (TCP), прерывание.

cd /var/www/discourse && su discourse -c bundle exec rake db:migrate rake aborted!
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 peeraddr=xx.xx.xx.xx:443 state=error: unexpected eof while reading (OpenSSL::SSL::SSLError)

Ваша ошибка заключается в строке плагина Locations

- git clone  https://github.com/paviliondev/discourse-locations

Уберите “.git”, как в моей строке выше.

https://github.com/paviliondev/discourse-locations

В ссылках на плагины на GitHub нет “.git”. В первой строке для docker есть “.git”. Плагины — это просто ссылки.

Если вы прокрутите лог вверх, то увидите какую-то ошибку, связанную со строкой плагина Locations. Ошибка, которую вы привели, возникает и у меня, но она не влияет на процесс пересборки.

Это ни на что не повлияет — оба варианта дадут одинаковый результат.

Понял, не знал. Просто сравнивал строки файла app.yml моего экземпляра и заметил, что только строка docker имела расширение «.git», и вспомнил предупреждения о том, насколько чувствительны такие структуры файлов.

Спасибо за уточнение.

Если это точная копия app.yml, то строки git начинаются не с того места. - должно находиться под d.

cmd:
  - git…

Тогда мой вопрос: почему остальные плагины с .git в URL работают нормально? Например, плагины «Календарь» и «Новости» отлично работали с .git, как мы обычно применяем команды git. Не могли бы вы немного пояснить, почему .git имеет значение?

Я вижу, что миграция завершается неудачей, и также отображается проблема, связанная с портом. Не уверен, в чём причина.

Если вы видели ответ @supermathie на моё сообщение, то я ошибался. Я основывался на настройке своего app.yml. Похоже, что подходит любой из вариантов раскладки.

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

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

Возможно, при редактировании файла app.yml вы случайно вставили пробел или что-то подобное. Хорошей практикой является сохранение содержимого файла app.yml перед внесением изменений, чтобы в случае неудачи можно было сравнить старую и новую версии, при необходимости даже построчно.

Я обычно слежу за процессом сборки в реальном времени и привык к некоторым распространённым сообщениям об ошибках или предупреждениям, которые, как правило, не влияют на успешность сборки.

Давно у меня была ошибка, связанная с плагином, но в моём случае она возникла из-за того, что я пропустил обновление, в котором Chat был объединён с ядром.

Чтобы помочь определить место сбоя, участникам форума потребуется увидеть больше лога сборки.

Запуск discourse-doctor, как предлагает сообщение об ошибке, также может помочь. Однако, исходя из моего опыта, лучший способ — прокрутить лог вверх.

Вы также можете скопировать нижнюю часть или весь файл app.yml и вставить его сюда. Только не забудьте удалить конфиденциальную информацию, например строки с настройками почтового провайдера или данные MaxMind. Хотя вы подозреваете, что проблема в плагинах, копирование только нижней части от $home вниз тоже может дать некоторые подсказки.

Я вижу эту строку и могу подтвердить, что на моей второй ВМ наблюдается та же проблема, но только для плагинов локализации.
Причина:
OpenSSL::SSL::SSLError: SSL_connect вернул=1 errno=0 peeraddr=184.104.226.109:443 state=error: неожиданный конец файла при чтении (OpenSSL::SSL::SSLError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:46:in connect_nonblock' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:46:in ssl_socket_connect’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1742:in `connect’

Можете ли вы пересобрать систему, если удалите плагин геолокации из app.yml?

Проверили ли вы отступы в вашем файле, как упоминалось здесь?

Всё работает отлично, за исключением местоположения.

Я полагаю, Роберт скоро рассмотрит проблемы с плагином локаций. Я заметил ошибку в последней версии Discourse в PR, исправляющем устаревание, и он сказал, что очень скоро это проверит.

Спасибо за эту информацию, и я надеюсь, что получу уведомление, как только мы это решим.

Большое спасибо.

Если вы хотите, чтобы это было рассмотрено в приоритетном порядке, и у вас есть бюджет, создайте пост в Marketplace, но похоже, что это проблема с версией/совместимостью гема.

но на прошлой неделе я установил те же плагины в Docker 24.0.x, и всё работало. Здесь же Docker 27.0.x — это единственное отличие

Плагин «Новости» тоже сломан.