Модернизация производства — правильная процедура выполнения

Здравствуйте,

Я собираюсь обновить наш производственный сервер Discourse (мы размещаем его самостоятельно на EC2 в соответствии с официальными инструкциями по установке) и хотел бы уточнить рекомендуемый подход.

Кнопка обновления в интерфейсе у нас не включена, поэтому обновление будет выполняться непосредственно на экземпляре EC2. На мой взгляд, существует два основных способа сделать это:

  • Пересоздать наш сервер EC2, который загрузит свежую копию репозитория discourse_docker с GitHub и использует шаблоны оттуда, то есть web.template.yml в настоящее время ссылается на базовый образ discourse/base:2.0.20260209-1300. Этот подход удалит текущий работающий сервер и запустит новый.
  • Войти на существующий сервер EC2 и выполнить следующие команды для пересоздания текущего образа и перезапуска контейнера:
    • ./launcher rebuild app

У меня есть два вопроса:

  1. Какой подход следует использовать для обычного обслуживания?
  2. Если мы выполним команду rebuild app, будет ли при этом загружена ветка main репозитория discourse_docker?

Я изучил сайт https://releases.discourse.org и вижу, что версия 2026.3.0 еще не выпущена. Понимаю я это так: в производственной среде не следует использовать новейшие версии из ветки main, так как они все еще находятся в активной разработке.

Любая помощь будет очень кстати. Спасибо.

Если вы хотите обновиться до последней версии, достаточно сделать это вручную через панель управления.

Если же вы хотите перейти на версию esr, просто укажите esr в конце файла containers/app.yml:

params:
  version: esr

После этого выполните повторную сборку.

Убедитесь, что подключение к сети работает корректно.

1 лайк

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

Таким образом, установка версии как esr переопределяет базовый образ, используемый в шаблонах?

Мы не хотим, чтобы обновление было включено в интерфейсе администратора, поэтому нам нужен способ сделать это на уровне экземпляра или просто пересоздать экземпляр и позволить нашему AutoScaler управлять им.

Если мы используем esr, как оно обновляется при выпуске критического исправления? Снова ли мы просто пересоздаём его через launcher/новый экземпляр EC2 на ежемесячной основе, чтобы включить любые обновления версии esr?

Вы читали Understanding Discourse release channels и Configure a supported tracking branch to get Discourse software updates? Я бы описал разницу скорее как возможность сразу получить доступ к последним изменениям или получать их с небольшой задержкой. Второй вариант может быть очень полезен для кастомных разработок, которые сначала нужно адаптировать. В противном случае я бы предпочел доступ к новейшим функциям и исправлениям. Конечно, это несёт риск появления новых ошибок, но версия, замороженная три недели назад, также содержит ошибки, которые, возможно, уже исправлены в актуальной версии, но обычно они не настолько критичны, чтобы требовать обратного переноса в последний релиз.

Также имейте в виду, что откат к предыдущей версии не поддерживается, поэтому, если вы используете версию новее текущего ESR, вам нужно дождаться публикации следующего ESR.

3 лайка

Если вы в настоящее время используете значительно устаревшую версию, вам может быть полезно выполнить команду git pull перед запуском лаунчера.

1 лайк

Ах, я пропустил пост Configure a supported tracking branch to get Discourse software updates.

Исходя из полученных ответов, я думаю, что буду использовать ветку release, так как мы обновляемся раз в месяц.

Большое спасибо за это.

1 лайк

Значит, у вас не установлен discourse-docker.

1 лайк

Я использую Discourse в качестве личной базы знаний и почти каждый день пересобираю его :rofl:

Решил добавить сюда, вместо создания новой темы.

У кого-нибудь тоже возникают проблемы с обновлением через приложение или интерфейс?

Мне иногда удаётся обновить docker_manager через мобильное приложение, но сам Discourse постоянно отображается в статусе «обновление», и мне приходится заходить в консоль для обновления.

В данный момент у меня версия 2026 04, актуальная на несколько минут назад.

Буду признателен за любые подсказки.

Спасибо!

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