Не удалось обновить — сбой инициализации при пересборке приложения

У меня появилось уведомление о необходимости обновления нашей установки, поэтому я зашел в админ-панель и увидел следующее:

Нажатие на ссылку обновления запустило проверку, но оба раза система сообщила, что «все актуально». Тогда я попробовал выполнить ./launcher rebuild app и получил следующую ошибку:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
' failed with return #<Process::Status: pid 130 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["sudo -H -E -u discourse git reset --hard", "sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n  set -o errexit\n  if [ $(git rev-parse --is-shallow-repository) == \"true\" ]; then\n      git remote set-branches --add origin main\n      git remote set-branches origin $version\n      git fetch --depth 1 origin $version\n  else\n      git fetch --tags --prune-tags --prune --force origin\n  fi\n'", "sudo -H -E -u discourse bash -c '\n  set -o errexit\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n      git pull\n  else\n      git -c advice.detachedHead=false checkout $version\n  fi\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
bootstrap failed with exit code 128
** 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.
fd6a747d640a06c375439c5c134aa46ff11ceb8f677d6d16247cb57c9772f731

Затем я запустил ./discourse-doctor, и сайт снова заработал (хотя, странно, тестовое письмо не дошло — возможно, это отдельная проблема). Я попробовал снова выполнить ./launcher rebuild app, но загрузка снова не удалась с той же ошибкой.

Есть ли у кого-нибудь идеи, что может быть причиной? Я использую Docker на Ubuntu 22.04.

Можете ли вы это сделать и добавить эту информацию сюда?

Вот полный лог команды app rebuild:

discourse-log.log.txt (17,7 КБ)

Я заметил, что при выполнении app stop и app start всё работает нормально, но, возможно, это происходит на старой версии?

Верно. Нам не нужны все логи, только явные ошибки (не предупреждения)

(не уверен, почему моя загрузка не работает по этой ссылке, но) единственная очевидная ошибка, которую я вижу при просмотре этого лога, это:

fatal: unable to access 'https://github.com/discourse/discourse.git/': Could not resolve host: github.com

Это звучит нехорошо?

~$ host github.com на сервере работает нормально и успешно разрешает адрес.

Если бы ошибка была очевидной, он бы не стал писать об этом. :slight_smile: (Но если серьёзно, человеку, не знакомому с такими логами, очень сложно понять, что важно, а что нет. Можно найти сотни тем, где кто-то ошибочно определил, в чём именно проблема.

Похоже на проблему с сетью Docker, которая каким-то образом нарушена. Актуальна ли у вас версия Docker? А операционная система?

но @gilgongo попал в точку :wink:

Ах, сетевые проблемы? Хорошо, я попытался сделать «базовую» вещь: выполнил systemctl restart docker.service, затем ./launcher rebuild app и (после того, что казалось вечностью) всё снова заработало! Теперь указано, что у меня версия «3.3.0.beta3-dev», что, думаю, звучит хорошо? По крайней мере, оно работает.

Фух — спасибо за помощь! Я люблю Discourse!