Я пытаюсь разобраться в конфигурации «без простоев» (zero downtime). В моей текущей настройке есть несколько экземпляров Discourse для разных сообществ. У обоих используется конфигурация контейнеров data и web версии 2. На уровне хоста работает Nginx, который обрабатывает окончание SSL-соединения и использует сокетное соединение, передаваемое в Nginx контейнера.
Нашёл две темы, представляющие интерес:
Пытаюсь понять этот процесс. Кажется, что для его выполнения предполагается наличие определённых знаний. Любая помощь здесь была бы очень кстати.
Первое, что я хотел бы понять: как узнать, когда контейнер data нуждается в обновлении. Казалось бы, есть случаи, когда нельзя просто пересобрать контейнер web. Как мне точно определить, когда это так? Это все случаи, когда опция обновления в панели администратора (UI) для обновлений серая, а также потенциальная кастомная работа с темами и плагинами? Смогу ли я узнать это наверняка, просмотрев миграции схемы базы данных? Или мне нужно будет настроить staging-окружение и просто попробовать, чтобы убедиться?
Следующий вопрос: как выполнить обновление без простоев. Судя по двум ссылкам, всё равно придётся пересобирать контейнеры data и web? Я не могу расшифровать это. Нужно ли иметь отдельные контейнеры data и web, чтобы в итоге достичь обновления без простоев?
Любые рекомендации будут отличными! Вероятно, я мог бы потратить много часов и найти что-то, что вроде бы работает, но лучше опереться на плечи гигантов и не выяснять нюансы на собственном горьком опыте (в продакшене), если это возможно.
Если вам потребуется дополнительная информация о моей конкретной настройке, пожалуйста, задавайте уточняющие вопросы. Я отвечу напрямую и обновлю этот пост.
Спасибо.