Алексей Полоз, Чувак, ты как будто тут единственный, который работает с JS, HTML и прочим. Я мыслю чуть дальше и говорю, что нет ни одного удачного примера, чтобы строка могла превышать 100 символов.
Из них где-то 5-7 штук — это всякие mysql, redis, elasticsearch. В среде разработки они контейнеризованы (самые стандартные, без тюнинга — percona и redis), на проде они работают без докера.
Остальные 30+ контейнеров — проекты соседних команд, к которым ты вообще можешь не иметь отношения. Написаны они на самых разных языках и технологиях: Python, PHP, Perl, Ruby, Node.js и прочее. Если бы ты захотел поднять эту экосистему без докера — тебе понадобился бы вагрант и очень много своего времени. Либо засорять свою любимую систему, но всё равно очень много времени. С докером это: скачал образ, поставил галочку в .env файле, что проект надо запускать, иногда склонировал репозиторий, запустил docker-compose — работает.
Наружу каждого контейнера торчит какой-то интерфейс (обычно HTTP). Это всё, что тебе нужно знать о каждом. Не надо знать, как настраивать, uwsgi там или gunicorn или uvicorn. pip или composer. Запустил — работает.
Каждый коммит в git запускает сборку образа. Прод использует код из ветки production и (иногда) собирается по-другому, не как master. Например, статика там вебпаком сжимается в production-mode, у джанги отключается DEBUG=True, а у Gunicorn reload=True. На проде rancher.
Из минусов — это занимает очень много места на диске. Но дело поправимое — почти все образы можно собрать с alpine (сейчас почти везде debian).
Anton Mashletov, если у меня есть бесплатный docker registry — то скорее всего докером. Уж слишком я к нему пристрастился, потому что он очень простой. Но раньше ansible и даже иногда fabric хватало.
Anton Mashletov, угу. А потом перенёс на продакшен, а там "чёта не работает". А если у тебя экосистема — 30 таких проектов, 29 из которых разрабатывал не ты и даже не на тех языках, которые ты знаешь и кодовая база некоторых превышает 100к строк — удачи)
ради удобства создавать для каждого сервиса вирт. ОС?
Ты вообще читал про докер? Там есть слои, которые имеют особенность шариться между контейнерами. Даже если бы твой Alpine Linux занимал 130мб диска и у тебя было бы 30 контейнеров, то он бы занимал именно 130мб диска, а не 130*30, как тебе может показаться. Но он занимает только 4.2мб и ещё и шарится между всеми контейнерами, которые его используют (при условии, что версии алпайна одинаковые)