Пересборка зависает при попытке остановить контейнер

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

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

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

Затем мне пришлось выполнить sudo git stash перед pull, так как возникла ошибка из-за конфликтов.

Казалось, всё шло нормально (я оставил процесс на более чем час), но затем сеанс Terminal закрылся (ошибка broken pipe). Чтобы это исправить, я установил ClientAliveInterval на сервере в 60 секунд (ранее эта настройка была закомментирована), перезапустил сервер и попытался снова.

Теперь при запуске скрипта rebuild он падает, когда пытается остановить контейнер docker.

Я попытался обойти это, запустив docker kill <id> перед выполнением скрипта rebuild, но происходит тот же сбой (загрузка CPU 100% в течение примерно 15 минут… затем ничего не происходит в течение часов).

После перезагрузки сайт всё ещё запускается, но обновить его не удаётся (обновитель в интерфейсе по-прежнему сообщает, что я использую устаревший образ Discourse).

Буду очень благодарен за любые советы.

Трудно сказать, не видя вывода сборки.

Попробуйте использовать tmux (или аналогичный инструмент), чтобы сеанс оставался открытым при потере соединения (вы можете подключиться к сеансу с помощью tmux attach).

Возможно, стоит ознакомиться с обновлением PostgreSQL 13?

Спасибо, Джей, я думаю, я нашел проблему.

Мой провайдер VPS, webdock.io (кстати, отличная компания), не поддерживает ZFS, так как использует его на уровне хоста; мне посоветовали, что вложенный ZFS не подходит. Они также не рекомендовали overlay2 для моей установки и предложили отредактировать launcher, чтобы включить драйвер хранения vfs, которого по умолчанию нет.

171‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎ Storage Driver: (vfs|aufs|zfs|overlay2)
‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‏‏‎‎‏⬆️

Подозреваю, что sudo git pull перезаписал это, а затем я попытался пересобрать с неправильным драйвером хранения?

Я только что откатил всё назад, затем снова отредактировал launcher перед запуском rebuild app, и теперь всё работает.

cd /var/discourse
sudo git stash
sudo git pull
sudo nano launcher 

‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ затем отредактируйте строку 171, чтобы включить vfs

sudo ./launcher rebuild app

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

Webdock (теперь) рекомендует использовать fuse-overlayfs в качестве драйвера хранения Docker: How to change the Docker storage driver – Webdock

Причина в том, что vfs приводит к высокому потреблению дискового пространства.

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

Подробные инструкции по решению этой проблемы я привёл в своей публикации на блоге: Deploying Discourse on a Webdock server

Вы также можете поступить так, как вы уже сделали, добавив установленный драйвер в команду egrep.

И почему вы говорите, что Webdock не позволяет создавать пользователей root?
Вы можете просто переключиться на root с помощью sudo su и после этого выполнить команды из руководства по установке Discourse.