Приложение в docker: зачем разделять по контейнерам?

Начинаю знакомиться с Docker. Мне нравится идея изоляции всех зависимостей сложного приложения внутри одного контейнера. Но из чтения мануалов узнал о необходимости разделения сервисов (например: nginx, php-fpm, mysql, mongo, redis), входящих в состав приложения, на разные контейнеры и последующая их линковка. Не совсем понимаю зачем это нужно делать. Почему нельзя создать один контейнер со всеми необходимыми зависимостями внутри? Или это невозможно технически?
  • Вопрос задан
  • 1472 просмотра
Пригласить эксперта
Ответы на вопрос 2
edinorog
@edinorog
Троллей не кормить!
я бы поспорил относительно изоляции =). на хабре как раз была великолепная статья на эту тему. habrahabr.ru/post/258595 дыр столько что данное супермегачудо подходит разве только для домашнего сервака для "поиграться!"
Ответ написан
Комментировать
@iborzenkov
Да ни зачем это не нужно.
У них мануалы написаны потому что круто мы так могем.
Сделайте отдельный контейнер с (nginx, php-fpm, mysql, mongo, redis) и вашим сайтом и отлично. Я вообще вижу смысл разделять только на 3 части на продакшене - хранилище, в котором лежат все ваши базы и которое нужно бэкапить (как раз удобно - контейнером), код, который вы при деплое меняете и маштабируете и балансеры, которые одни у приложения
В базовых контейнерах задача развернуть по быстрому утилиту чтобы посмотреть.
Поверьте, ничего хорошего из этого не выйдет

sudo docker ps | wc -l
92

при 10 сервисах

Объединяйте в контейнер ваше приложение, если вашему веб-приложению требуются для работы несколько баз, с десяток воркеров на бэкэнде, сложный конфиг нгинкса куча кронов и так далее, то вот это все и заверните в один контейнер.
Ну а если у вас простой сайт на стандартном фреймворке и одной базе, то не очень то и нужны вам контейнеры.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы