Под эгидой микросервисной архитектуры решил посмотреть в сторону "запихивания" сайта в докер, чтобы его можно было очень удобно и быстро масштабировать.
Были ли у вас опыты переноса работающих вп сайтов в докере? Как вы в целом считаете, это хорошая мысль? И что обычно использовать - wordpress образ докера? Или связку nginx+php-fpm+mysql?
Интересно много подробностей, хотелось бы всех их рассмотреть, можно в комментариях. Кто "стойкий" и выдержит от меня наплыв вопросов?) Спасибо.
Илья Родионов, не конечно. Можете посмотреть мои ответы и убедиться в моём докер–фанатизме.
Что касается вашего вопроса: это действительно хорошая идея изолировать времена исполнения ваших процессов.
Для реализации вам понадобятся, по сути, только два процесса. PHP и (My)SQL. PHP код и артефакты должны лежать в беспроцессных контейнерах или в вольюмах. После того как закончите писать Докерфайлы, объедините всё это с помощью Доке Композ. И наслаждайтесь идемпотентными кроссплатформенными билдами, с удобной конфигурацией и деплоем. В прочем, вы и сами знаете почему Докер хорош.
Несколько лет используем докеры для разворачивания сайтов на WordPress - просто, понятно, удобно и в песочнице и самое главное окружение локальное, тестовое и продуктовое полностью совпадает.
Деплой отлично строится автоматически на основе GitHub + TravisCI.
Нет поганой виртуализации как при испльзовании Vagrant, нет зависимостей от Virtualbox.
Михаил Кобзарев, спасибо, интересный образ. но все-таки все запросы извне вы сначала обрабатываете nginx, затем оно попадает на траефик, а затем уже на бекенды?
Как вы его масштабировать собрались? Lamp прекрасно живет без геморройного докера. И настройки у вас скорее всего будут на уровне "лишь бы работало".
Напишите лучше нормальный сценарий на Ansible. И переезжайте с ним, хоть на кудыкину гору. Окружение развернется в считанные минуты.
Sanes, именно поэтому я и сказал "есть много вопросов")
Но вообще, fail2ban можно так же привести в докер, либо вынести отдельно. Логи можно будет логировать в обычный /var/log и ротировать, по крону раз в день. Так же их можно в принципе будет сбагривать для удобства в какой-нибудь elk, чтобы хранить.
Что вы понимаете под нормальными конфигами? их же можно будет монтировать как внешние
Илья Родионов, вот теперь расскажите мне, зачем весь этот геморрой с томами, контейнерами и т.д.?
Если всё прекрасно может существовать на одной машине.
Sanes, потому что одна машина умрет - и сдохнет сервис.
умрет нжинкс на хосте, пхп-фпм кончится по памяти (такое бывало), и тоже все умрет
с докером контейнер перезапустится (например), либо просто разренестся по другим машинам. и еще улетучивается необходимость и зависимость от _одной конкретной машины_
Илья Родионов, задайтесь вопросом, почему хостинг-провайдеры на страдают с докером и у них прекрасно работают сотни разношерстных сайтов на одном сервере.
Илья Родионов,
Вы себе сейчас добавляете точки отказа. И даже с докером у вас всегда будут точки отказа. Надо слишком много всего продублировать и всё равно в случае отказа будет даунтайм.
Илья Родионов,
Потом плачут горькими слезами. Большинство вам об этом не скажут, чтобы не показать ошибочный выбор. То с сетью косяк, то с файловой системой... Да и задачи там совершенно другие.
Докером пользоваться для развертывания Wordpress, это верх идиотизма.
Sanes, ну какой-то странный у вас кейс и представление о докере) я вот с ним уже полгода, и полет пока хороший. некоторые компании - уже больше двух/трех лет. там вообще все отлично
Илья Родионов,
Я предпочитаю пользоваться системами управления конфигурациями. Особенно в таком кейса, как Lamp.
Вы представляете, какой объем работы надо выполнить, чтобы по-человечески настроить этот стек?
Далеко не то, что у вас в имиджах и написано в заветах Digital Ocean.
Илья Родионов,
Отсюда и не вижу смысла. По времени, что докер файл описывать, что сценарии Ansible будет одинаково.
При этом у меня будет настроен нативный сервер, без гемороев и привязки к докеру. Нормально обновляться из нормальных репозиториев.
Максимум вижу смысл в докере, это для ленивых программистов на локалхосте для разработки. Раз-два и в продакшн...
А в плане безопасности - не удобней ли докер?
Если кто-то что-то заинжектит или на хост сможет попасть, то попадет просто в изолированную среду контейнера.
Sanes, полностью вас поддерживаю по поводу Docker и Lamp. Мне кажется, что здесь более уместно будет использовать Ansible/Puppet для конфигурирования, хотя под Wordpress предпочитаю LEMP и пулы php-fpm, соответственно. А тащить Docker и для оркестрации K8S такой ненужный гемор, причем это также и на производительности скажется, на трудности обслуживания системы в целом, повысит порог входа для новых сотрудников, и, как вы уже верно подметили, добавит точки отказа. С одной стороны, если хорошо освоил Docker и K8S - можно относительно быстро развернуть сотни WP-инстансов и управлять ими, а с другой стороны, лучше подбирать наиболее подходящие для подобных целей инструменты, а не лезть везде с контейнерами, как спасением от всех бед...