Я собираюсь обновить наш производственный сервер Discourse (мы размещаем его самостоятельно на EC2 в соответствии с официальными инструкциями по установке) и хотел бы уточнить рекомендуемый подход.
Кнопка обновления в интерфейсе у нас не включена, поэтому обновление будет выполняться непосредственно на экземпляре EC2. На мой взгляд, существует два основных способа сделать это:
Пересоздать наш сервер EC2, который загрузит свежую копию репозитория discourse_docker с GitHub и использует шаблоны оттуда, то есть web.template.yml в настоящее время ссылается на базовый образ discourse/base:2.0.20260209-1300. Этот подход удалит текущий работающий сервер и запустит новый.
Войти на существующий сервер EC2 и выполнить следующие команды для пересоздания текущего образа и перезапуска контейнера:
./launcher rebuild app
У меня есть два вопроса:
Какой подход следует использовать для обычного обслуживания?
Если мы выполним команду rebuild app, будет ли при этом загружена ветка main репозитория discourse_docker?
Я изучил сайт https://releases.discourse.org и вижу, что версия 2026.3.0 еще не выпущена. Понимаю я это так: в производственной среде не следует использовать новейшие версии из ветки main, так как они все еще находятся в активной разработке.
Таким образом, установка версии как esr переопределяет базовый образ, используемый в шаблонах?
Мы не хотим, чтобы обновление было включено в интерфейсе администратора, поэтому нам нужен способ сделать это на уровне экземпляра или просто пересоздать экземпляр и позволить нашему AutoScaler управлять им.
Если мы используем esr, как оно обновляется при выпуске критического исправления? Снова ли мы просто пересоздаём его через launcher/новый экземпляр EC2 на ежемесячной основе, чтобы включить любые обновления версии esr?
Вы читали Understanding Discourse release channels и Configure a supported tracking branch to get Discourse software updates? Я бы описал разницу скорее как возможность сразу получить доступ к последним изменениям или получать их с небольшой задержкой. Второй вариант может быть очень полезен для кастомных разработок, которые сначала нужно адаптировать. В противном случае я бы предпочел доступ к новейшим функциям и исправлениям. Конечно, это несёт риск появления новых ошибок, но версия, замороженная три недели назад, также содержит ошибки, которые, возможно, уже исправлены в актуальной версии, но обычно они не настолько критичны, чтобы требовать обратного переноса в последний релиз.
Также имейте в виду, что откат к предыдущей версии не поддерживается, поэтому, если вы используете версию новее текущего ESR, вам нужно дождаться публикации следующего ESR.
У кого-нибудь тоже возникают проблемы с обновлением через приложение или интерфейс?
Мне иногда удаётся обновить docker_manager через мобильное приложение, но сам Discourse постоянно отображается в статусе «обновление», и мне приходится заходить в консоль для обновления.
В данный момент у меня версия 2026 04, актуальная на несколько минут назад.
Однажды я обновлял Discourse через административную панель, и в результате было утеряно множество вложений к сообщениям. После этого я больше не использовал этот способ обновления, а теперь всегда применяю команду rebuild.