Я пытался избежать мнения здесь и просто изложить факты моего опыта, однако сама природа вопроса, конечно, вызывает неопределенность и споры.
Я недавно завершил миграцию в Docker.
Основные преимущества:
- Обеспечение мышления без гражданства
- Пересчет
- Простота развертывания
- Идентичная среда разработки (* массовое предостережение - см. Ниже)
Основные недостатки:
- Кривая обучения
- Абстракция окружающей среды
Перво-наперво:
Если ваши сервисы с высокой степенью состояния (в файловой системе), вам придется перестроить архитектуру или потерять почти все преимущества Docker. Если это так, я бы решительно сказал вам не беспокоиться на этом этапе и, возможно, рассматривать Docker как среднесрочную и долгосрочную часть более широкого проекта, продвигающегося к 12-факторному приложению. (https://12factor.net/)
Даже если ваша базовая архитектура готова к миграции, преимущества сильно перевешиваются недостатком кривой обучения, если ваш сайт никогда не будет «огромным». Горизонтальное масштабирование - это здорово, но большинству сайтов оно никогда не понадобится, и время, затраченное на кривую, в большинстве случаев может быть использовано с большей пользой, уменьшая время выхода на рынок / итерации. Я довольно уверен в компьютерах и новых технологиях, и мне потребовалось 4 довольно солидных месяца для стека, похожего на ваш.
Предупреждение о развитии:
Преимущество «разработки» сопряжено с опасностью, особенно если вы работаете на Mac. PHP требует много файлов, работающих в тандеме, для запуска вашего сайта, а различия в файловой системе означают, что это 4 или в 5 раз медленнее на вашем Mac (при запуске Docker), чем на вашем сервере. Это очень расстраивает. Есть решения, но они добавляют к кривой обучения и все еще не совершенны.
Кроме того, «мечта» об идентичных средах также имеет много кошмарных аспектов. Собираетесь ли вы принудить локальные машины использовать SSL? Тогда вам понадобятся «поддельные» самозаверяющие сертификаты на всех ваших компьютерах разработчика, и, следовательно, жалобы от браузеров каждый раз, когда вы пытаетесь посетить его. Кроме того, NGINX работает по-разному с docker-compose, чем с развертыванием стека, и есть много преимуществ для разработки с использованием compose, а не стека, поэтому использование стека на самом деле не вариант. Мне потребовалась неделя, чтобы найти решение этой проблемы.
Однако, как только эти проблемы были исправлены (мы перешли на Linux для разработки, и у нас есть сценарии для решения большинства других проблем, и нам нужно просто сказать Chrome, что я принимаю «поддельные» сертификаты каждые 2 часа или около того) по общему признанию, все очень гладко, и я рад, что у меня был этот опыт. Новые проекты, вероятно, с самого начала будут использовать преимущества докера, когда у меня появилось ощущение того, как он работает, где есть подводные камни и как исправить ситуацию.
Вывод:
Я бы посоветовал изучать докер больше года в свободное время, а не заниматься им на работе. Есть преимущество сейчас, когда мы прошли через боль, но это было МНОГО боли. И если вы узнаете это в нерабочее время, убедитесь, что вы делаете что-то, что имитирует полномасштабное производственное развертывание, с непрерывной интеграцией, тестированием, работами. С Docker так легко начать, что он обманом заставит вас думать, что освоить его одинаково легко. Это действительно не так.