Сборка не удалась с ошибкой

Мой форум какое-то время работал нормально, но при попытке обновиться с текущей версии 2.8.0.beta7 появилась ошибка:


I, [2022-05-17T07:29:17.860652 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/runtime.rb:309:in `check_for_activated_spec!': Вы уже активировали uri 0.10.0, но ваш Gemfile требует uri 0.11.0. Поскольку uri является стандартным модулем, вы можете либо удалить зависимость от него, либо попробовать обновиться до более новой версии bundler, которая поддерживает uri в качестве стандартного модуля. (Gem::LoadError)
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/runtime.rb:25:in `block in setup'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/spec_set.rb:136:in `each'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/spec_set.rb:136:in `each'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/runtime.rb:24:in `map'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/runtime.rb:24:in `setup'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler.rb:151:in `setup'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/setup.rb:20:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/ui/shell.rb:136:in `with_level'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/ui/shell.rb:88:in `silence'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/setup.rb:20:in `<top (required)>'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:56:in `require_relative'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:56:in `kernel_load'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli.rb:483:in `exec'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli.rb:31:in `dispatch'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/cli.rb:25:in `start'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/exe/bundle:48:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
        from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.13/exe/bundle:36:in `<top (required)>'
        from /usr/local/bin/bundle:23:in `load'
        from /usr/local/bin/bundle:23:in `<main>'
I, [2022-05-17T07:29:18.139287 #1]  INFO -- :

Не понимаю, почему возникло несоответствие зависимостей в gem.

Вот что я сделал:

  1. Зашёл на сервер и выполнил github pull
  2. Выполнял ./launcher rebuild app
    2.1 Установлен только плагин docker-manager, других нет
  3. Пробовал несколько раз, также использовал ./discourse-doctor, но ошибка остаётся той же.
  4. У меня есть контейнер data, в котором хранятся данные.

Пожалуйста, помогите, сайт недоступен :frowning:

Попробуйте пересобрать контейнер данных, а затем контейнер веб-сервера.

Спасибо за ответ.

Я попытался пересоздать контейнер с данными, но ошибка осталась прежней.

Попробуйте запустить

  ./launcher start app

чтобы перезапустить форум.

К сожалению, это не сработает, так как нет контейнера приложения.

Однако я изменил версию с tests-passed на stable, после чего смог установить все гемы. Форум снова работает. Не уверен, в чём разница и почему так происходит.

Тогда вам следовало использовать имя вашего контейнера.

    ./launcher start web_only

Но ваше решение сработало!

Извините, я имел в виду, что я указал файл yml как data.yml, поэтому команда могла бы выглядеть так:

./launcher start data

Однако во время сборки возникла ошибка, и контейнер Docker не удалось создать. Поэтому я не думаю, что его можно запустить с помощью указанной выше CLI-команды.

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

Спасибо.

Пожалуйста, поделитесь списком плагинов из вашего файла app.yml. У вас есть плагин, конфликтующий с последней версией Discourse.

Но вы не пробовали? Обычно можно перезапустить старый/существующий контейнер, если пересборка не удалась.

Это сложно понять.

Кажется очевидным, что проблема в плагине, но он также сказал:

Однако

Так что, похоже, он снова в сети.

Вы правы, ./launcher start app запустит старый контейнер.

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

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

Я попробовал снова, используя только этот плагин. Могу подтвердить: если изменить версию на tests-passed, возникает ошибка, указанная выше. Однако при смене версии на stable всё работает корректно.

На самом деле, когда я добавляю больше плагинов с версией stable, приложение всё ещё собирается успешно. Поэтому в моём случае, думаю, проблема не в плагинах.