Обслуживание сайта с помощью команды “./launcher rebuild app” занимает некоторое время для полной пересборки сайта (установка новых плагинов и т.д. из git).
Есть ли рекомендуемый способ показать статическую страницу с надписью “Ведутся технические работы”, пока я пересобираю Discourse?
Я думал использовать nginx. Это предполагает остановку Docker для обслуживания порта 80 и настройку nginx как обратного прокси-сервера, который перехватывает трафик и перенаправляет его либо в контейнер Docker, либо на мою статическую страницу.
Я планирую делать это, вручную редактируя nginx.conf на нужный вариант:
Мой подход, который я считаю более простым и эффективным, — это использование двух контейнеров, чтобы вы могли собрать новый контейнер, пока старый продолжает работать. Это значительно сокращает время простоя. Другие считают, что запуск дополнительного веб-сервера проще.
Крупные обновления базы данных происходят реже одного раза в год. Небольшие обновления базы данных занимают немного времени: вы можете пересоздать контейнер с данными, уничтожить и запустить веб-контейнер всего за несколько минут. Похоже, что некоторые предпочитают видеть красивое сообщение о том, что сайт недоступен, вместо сокращения времени простоя, поэтому второй контейнер — это способ решения этой задачи.
На самом деле, возможно, самое простое решение — запустить вручную второй контейнер nginx с сообщением «Скоро вернёмся» во время обновления, например:
./launcher stop app
docker run nginx --name back-soon # и ещё несколько команд, чтобы убедиться, что страница отображается
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
Однако в этом случае вам потребуется получить сертификат и поддерживать его актуальность для контейнера back-soon, что усложняет процесс.