Docker-контейнеризация:
от local до production
Роман Кудлай @ Lodoss Team
Немного истории
О себе
● 2002 - IIS 5
● 2003 - VMware
● 2005 - Apache
● 2006 - Virtualbox
● 2007 - CSV
● 2010 - GIT
● 2010 - Nginx
● 2011 - Xen/OpenVZ/KVM
● 2016 - Vagrant/Docker
● 2016 - AWS
И это как разработчик...
Эволюция
standalone
denwer
lxc
lxd
virtualbox
kvm
docker
kubernetes
swarm
?
● Проблемы с
версиями
● Много мусора
● Мусор только
внутри контейнера
● Высокая
зависимость между
сервисами
● Каждый сервис
внутри отдельного
контейнера
● Связь на уровне
сети
?
Общая схема работы
4 звена деплоя
local dev stage prod
GIT
CI/CD
Email
Slack
...
projects on docker
docker-compose / project
mysqlphp-fpm
nginx memcache
sphinx
docker-compose / project
mysqlnodejs
redis logstash
mongo
docker-compose / project
postgresnodejs
redis
container vs image
local
docker-compose.yml
● Несколько файлов для
● local
● test
● prod?
Makefile
Что имеем
Плюсы
1. Быстрый старт
2. Минимум зависимостей
3. Нет мусора (почти)
4. Можно использовать ПО разных
версих
Минусы
1. MacOS + Symfony = :-(
2. А еще webpack :-((
3. Контейнеры и слои могут занимать
много места
CI / CD
Gitlab CI
● Написан DevOpsом
● Дорабатывается под каждый
проект разработчиком
● Автоматически разворачивается
● Использует Makefile
Pipeline
build lint test deploy
Что имеем
Плюсы
1. Автоматизация
2. Не нужен админ (а нужен Ops)
3. Минимизируется человеческий фактор
Минусы
1. Требуется начальное
конфигурирование
dev
Особенности
● lxc для проекта
● docker для сервисов
● Присматриваемся к kubernets
stage / prod
AWS ECS
Задачи
Мониторинг
Что имеем
Плюсы
1. Микросервисная архитектура
2. Легкое масштабирование
Минусы
1. Все проекты разные
2. Мне это тоже не нравится
Решенные задачи
1. Нет зависимости от версий ПО и его наличия
2. Удобство тестирование
3. Автоматизация тестирования и деплоя
4. Масштабирование
Нерешенные задачи
1. Полнейшая автоматизация
2. Проблемы с volumes
Заключение
docker-compose Makefile в свободном доступе
но в разработке…
А пока задаем вопросы
https://github.com/krom/docker-compose-makefile

Docker-контейнеризация: от local до production