Проблемы с пересборкой после обновления до Ubuntu 22.04

После того как я бился головой об стену много часов, пришло время попросить помощи.

Журнал отладки:

https://privatebin.net/?b56249efe41b5599#8nt7yMQU2Hft4HysXSoZkxXQTYdR9MFv91qC9sbBgen

Ваш Droplet (или контейнер Docker) испытывает проблемы с подключением к GitHub

fatal: unable to access ‘GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub’: Could not resolve host: github.com

Не могли бы вы проверить, доступен ли GitHub?

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

Остальные ошибки не имеют значения?

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

Попробуйте выполнить ping или curl для github.com и посмотрите, получите ли вы ответ. Это может быть проблема с брандмауэром или подключением, а не ограничение скорости.

Сообщение «Не удалось разрешить хост» указывает на проблему с DNS, то есть ваш сервер не может найти IP-адрес для github.com.

==================== ЖУРНАЛ ПЕРЕСОЗДАНИЯ ====================
Обнаружена архитектура x86_64.
Проверка актуальности лаунчера
Получение данных из origin
Лаунчер актуален

Это говорит о том, что ваш хост способен разрешать и подключаться к github.com, если только вы не клонировали репозиторий discourse_docker из другого места. Вы можете это подтвердить следующими командами для просмотра удалённых репозиториев:

cd /var/discourse
git remote -v

что должно вывести:

origin	https://github.com/discourse/discourse_docker.git (fetch)
origin	https://github.com/discourse/discourse_docker.git (push)

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

Команда git remote -v действительно выдала ожидаемый результат. Как мне устранять неполадки в Docker, или лучше просто переустановить его? Я готов это сделать, главное — не потерять данные. Где именно Discourse хранит свою базу данных и загруженные файлы (независимо от дальнейших действий, я хочу сделать их резервную копию вручную)?

/var/discourse/shared/standalone отображается как том в контейнере, и все постоянные данные хранятся там.

Команда docker network ls выводит список сетей Docker. Я вижу сеть bridge по умолчанию и ещё две сети. Контейнеры используют сеть bridge по умолчанию, если явно не указано иное.

Я нашёл некоторую информацию о том, что сеть bridge по умолчанию больше не обеспечивает подключение к внешнему миру. Я предполагаю, что в Ubuntu 22.04 могла быть установлена версия Docker, где это актуально, что означает необходимость настройки контейнера Discourse для использования пользовательской сети bridge.

Я думаю, что можно просто отредактировать файл /var/discourse/containers/app.yml и добавить в конец следующее, а затем пересобрать контейнер (однако я это не проверял):

networks:
  default:
    driver: bridge

Похоже, что в /var/discourse/shared/standalone/backups/default хранятся сжатые резервные копии всех важных данных: базы данных и загруженных файлов.

Спасибо за идеи, но это не сработало.

Мне стоит просто попробовать переустановить Docker или, если я решу это сделать, лучше полностью удалить всё и выполнить чистую установку Discourse (я устанавливал через Discourse | DigitalOcean Marketplace 1-Click App)?

Предполагаю, что импорт файла резервной копии в админ-панели Discourse — простая процедура?

Стандартная установка (standard install) — это единственный официально поддерживаемый способ установки, но ниже вы найдёте информацию о восстановлении из резервной копии. Процесс должен быть аналогичным для установки в один клик от DigitalOcean.

Похоже, что приложение для установки в один клик явно использует Ubuntu 20.04, поэтому, пока это не изменится, вероятно, стоит оставаться на версии 20.04. Она будет получать исправления ошибок и обновления безопасности ещё три года, поэтому спешить с переходом на 22.04 нет необходимости.

Однако стоит сначала попробовать переустановить Docker. Возможно, проблема возникла из-за обновления, и, теоретически, удаление и последующее повторное добавление сетевой конфигурации Docker в процессе установки может её исправить.

В итоге я просто пересоздал дроплет с чистой копией Ubuntu 22.04, вручную установил Discourse (стандартным способом), а затем импортировал резервную копию. Это было быстро и просто, и я жалею, что не сделал этого с самого начала.

Спасибо за всю помощь!

Это полезно знать: проблема не в самой установке на 22.04.

Этот уикенд я выполнил несколько обновлений do-release-upgrades с версии 20.04 до 22.04 и могу подтвердить, что теперь всё работает исправно, и переустанавливать Docker не нужно. Похоже, что в репозиториях Ubuntu за последние несколько недель что-то исправили.

Теперь можно выполнять такие обновления без проблем.