Как обновить Discourse в конфигурации с несколькими контейнерами?

Привет! Я только что развернул новую установку Discourse с несколькими контейнерами и хочу узнать, какой метод обновления будет для меня наиболее оптимальным.

В документации сказано:

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

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

Например:

Допустим, у меня есть два контейнера, работающих только в веб-режиме, на отдельных виртуальных машинах за балансировщиком нагрузки. Я вывожу один из экземпляров контейнеров из балансировщика нагрузки и запускаю bootstrap для последней версии. Старая версия всё ещё работает без простоя (это нормально?). Затем я возвращаю обновлённый контейнер в балансировщик нагрузки и повторяю процесс для другого контейнера.

Звучит правильно, не так ли?

В целом верно. Для обновлений с истинным нулевым временем простоя необходимо инициализировать новый контейнер с переменной окружения SKIP_POST_DEPLOYMENT_MIGRATIONS: 1, затем запустить его. После того как старые контейнеры перестанут работать, выполните команду SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate. В противном случае процесс инициализации может (хотя и не при каждом обновлении) привести базу данных в состояние, которое старые контейнеры больше не смогут использовать.

О, это здорово! Миграции базы данных как раз были моим главным беспокойством, так что полезно знать, как ими управлять!