Запуск докеризованных веб-сайтов по требованию

Запуск докеризованных веб-сайтов по требованию

У меня ограниченные ресурсы на сервере, и я хочу разместить 50 различных версий своего продукта. У меня очень сложный и, к сожалению, глючный продукт, и я хотел бы сохранить доступность каждой версии. Если будет сообщено о какой-либо ошибке, мы сможем провести расследование и выяснить, когда именно эта проблема впервые возникла.

Но поскольку каждый веб-сайт имеет 5 ГБ данных и 1 ГБ базы данных, невозможно держать все веб-сайты открытыми все время. Наш сервер выдает ошибки mysql и сервер не отвечает из-за переполнения памяти.

Мне было интересно, есть ли способ оставить эти 50 разных веб-сайтов отключенными по умолчанию. Если кто-то попытается добраться до версии-5-1.ourdomain.com, покажите экран ожидания и перенаправление, когда он загрузится.

А если веб-сайт не посещался более 30 минут, закройте его и освободите ресурсы.

решение1

Возможно, есть лучший способ, но вы должны иметь возможность использовать обратный прокси на хосте в сочетании с активацией сокета systemd. Когда запрос поступает в сокет, systemd может запустить контейнер и переслать запрос (он будет заблокирован до тех пор, пока контейнер не запустится и не получит запрос), затем что-то будет следить за файлами журнала, и когда в журнале доступа ничего не появляется, например, в течение 5 минут, просто остановите контейнер.

решение2

У меня была та же проблема (хотелось запустить веб-сервер по требованию... не имея 50(!) разных копий, работающих на одном хосте). Существующий ответ дает совершенно правильное решение, но для его настройки нужно еще немного поработать, и мне также хотелось чего-то, что можно было бы легко развернуть в среде контейнеров, которая не очень хорошо работает с systemd.

Для этой цели я создал следующий проект, который сейчас запускаю в производство:https://github.com/radian-software/sleeping-beauty

Он не идеален, но может подойти для вашего случая использования или может быть адаптирован под ваши нужды.

Связанный контент