Стоит ли использовать Docker в продакшене для нескольких сайтов на одной VPS?

Я задумался о целесообразности использования Докера в продакшене. На локальной машине использовать Докер очень удобно. Но что меня больше всего останавливает от использования в продакшене - так это потребление ресуров. Например, если раньше на одной слабой VPS с 512 оперативы я мог запустить штук 5 не требовательных сайтов и они бы все летали, то теперь так не получится. Потому что для каждого сайта будет отдельный LEMP стек. И БД в нём занимает просто неприлично много памяти - 512 мб на холостом ходу судя по статистике из Docker Desktop. Nginx и PHP примерно по 20-30 мб, так же на холостом ходу. Что делать? Я не хочу отказываться от идеи одинакового и легко переносимого окружения для разработки и продакшена. Мне также очень нравится то, что БД пишет данные в volume, который потом можно сжать и скопировать на другой сервер, а не охреневать когда надо перенести базу на сотни гигов. Можно конечно пойти на компромисс - контейнеризировать всё, кроме БД, но это уже получается не то что нужно. Либо использовать Докер только в крупных проектах которые размещаются на отдельных VPS. Что бы вы посоветовали?
  • Вопрос задан
  • 1893 просмотра
Пригласить эксперта
Ответы на вопрос 6
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Ориентироваться на Docker Desktop не надо.

Делать отдельную СУБД для каждого сайта, конечно же, тоже не надо (и вообще пихать её в докер - но это дискуссионно).

Да, под РНР придётся отдать кратно больше памяти, чем под единый php-fpm пул (но вы же не делаете один пул для нескольких сайтов на продакшене, правда?).

Ну а nginx по сравнению с остальными товарищами потребляет копейки.
Ответ написан
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Docker это про быстрое развертывание, ну и в какой-то мере про безопасность и изоляцию.
Никакого смысла держать на нем 5 сайтов нет смысла-если это не разработка.
Сайты нужно просто запускать от разных пользователей, чтобы при взломе одного не было доступа к остальным.
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Для сайтов - нет смысла.
Докер для развертывания удобен в случае различных кастомных настроек, установки плагинов и так далее. А банальный nginx+php разворачивается на любой ОС очень быстро.

Мне также очень нравится то, что БД пишет данные в volume, который потом можно сжать и скопировать на другой сервер, а не охреневать когда надо перенести базу на сотни гигов.

Кто мешает выделить отдельный volume для базы данных без всяких докеров?
Это может быть какой угодно volume - раздел, виртуальный диск, рейд, что угодно.

Либо использовать Докер только в крупных проектах которые размещаются на отдельных VPS.

IMHO докер вообще для сайтов не лучшее решение. А самое крутое преимущество докер получает вместе с оркестрацией типа kubernetes/openshift, когда десятки и сотни приложений/микросервисов.
Ответ написан
Комментировать
При общих ресурсах что-то может расходовать больше ресурсов, чем остальные, а при "докеризации" будет много копий одного и того же софта стека LEMP.
Так что из соображений экономии ресурсов скорее всего, общий ресурс будет более экономным вариантом.
Сложность состоит в том как настроить стек так, чтобы он мог обрабатывать каждый сайт наиболее равноправно и без скоса производительности для всех сайтов.

Однако, если есть другие факторы, такие как квотирование, (мнимая) безопасность, портативность, тогда Docker может рассматриваться как решение.
Ответ написан
Комментировать
@calculator212
В целом разворачивание БД в проде на докере это в целом довольно дискуссионный вопрос, т.к. это удобно, но дороже по ресурсам и производительность БД становится меньше. В целом БД в докере это чаще про разработку, в целом установка не такая удобная как в докере, но сейчас это всё сводится к паре команд и импорту каких-то настроек.
и раньше на одной слабой VPS с 512 оперативы я мог запустить штук 5 не требовательных сайтов и они бы все летали
Если сервер бьет по финансам, то по моему стоит настроить прод без докера, т.к. докер в целом это не про экономию ресурсов а про удобство и изолированность.
Мне также очень нравится то, что БД пишет данные в volume, который потом можно сжать и скопировать на другой сервер, а не охреневать когда надо перенести базу на сотни гигов
Честно говоря не понял особой разницы в прямом экспорте из базы, который можно также дампить в архив и в архивации volume, по сути одно и тоже.
Ответ написан
azerphoenix
@azerphoenix
Java Software Engineer
Я в проде, будучи разработчиком, использую Docker Swarm - https://dockerswarm.rocks/
С этого сайта удобно развертывать окружение. Обычно использую Rockly Linux 8 + Docker swarm (swarmpit, docker, traefik и т.д.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы