Кто понял docker?

Работаю на связке линукс, пхп, мускул, апач. Недавно попробовал докер. Суть разделения по контейнерам понятна, для пхп свой, для мускула свой, для доступа к ФС свой и т.д. Для чего это делается тоже понятно. Но нет полной картины, так сказать, начиная от машины разработчика и до выкладки на сервер.
Вот несколько вопросов:
- есть у меня образы всех выше перечисленных сервисов и я решил расшарить их с другим разработчиком. Ок, сделали, работаем. Потом решаем соскочить с пхп 5.6 на 7. Между собой без проблем, а как отправить это дело на рабочий сервер, не ручками?
- с ФС вообще тупик. Что делать, как обновлять к примеру базу данных миграциями, чтобы продакт получал готовую базу и сырцы движка сайта? Есть подозрения, что это к докеру не имеет отношения.
Может кто поделиться ссылочкой на статью (-и), где весь пазл с докером собирается воедино? Не обязательно под пхп, апач и т.д. Главное уловить суть.
  • Вопрос задан
  • 4182 просмотра
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
для доступа к ФС свой


Нет, для доступа к ФC используйте именованные волумы (named volumes). Контейнеры (data-only) для этог оне нужны.

Между собой без проблем, а как отправить это дело на рабочий сервер, не ручками?


docker registry, либо используем платный либо ставим у себя и там храним образы. То есть если кто-то решил обновиться до php7.0 мы должны заменить базовый контейнер, проверить что все работает, запушить... а у всх все подтянется.

Что делать, как обновлять к примеру базу данных миграциями, чтобы продакт получал готовую базу и сырцы движка сайта? Есть подозрения, что это к докеру не имеет отношения.


Именно, никакого отношения к докеру. Я обычно миграции накатываю прямо при старте контейнера. Так надежнее.

Может кто поделиться ссылочкой на статью

На статью - нет, их много. Могу поделиться тем как я использую docker на своих проектах. Там описан процесс сборки и деплоя в крадце. В идеале сборкой и деплоем должен заведовать CI-сервер а не руками локально:

https://github.com/intellectsoft-uk/symfony-skeleton
Ответ написан
@bamaz
Вы путаете задачи.
Деплой удобный - это не Докер.

Дело Докера - сэмулировать окружение операционной системы, чтобы моя программа могла запускаться где угодно. И все. Плюс удобное API.

Мы вот сейчас используем Yandex Cocaine. Хорошая вещь. Но безпроблемно компилируется только на Ubutnu 14.04. Поэтому мы его просто запускаем в Docker.

А сам Яндекс Кокаин уже умеет запускать нужные нам приложения ))) Вот такая змея, кусающая себя за хвост, получается. )))

То есть Докер решает одну из задач Деплоя - воспроизводимость операционного окружения запускаемой программы (не забывайте, что маппирование портов и дисков все же остается снаружи). При этом оно кушает немножко лишнего дискового места (хотя при использании всех образов с единым предком - не так уж и много).

Запускается довольно быстро.

То, о чем вы пишете - удобная и воспроизводимая настройка - это к инструментам типа Puppet, Ansible, Chief, Salt.

Будут ли они при этом использовать Докер или нет - другой вопрос. Скорее, да, будут использовать - для упрощения.

Но в вашем случае можно и без Докер - держать на сервере 3 версии PHP в разных каталогах. И выбор той или иной версии настраивать через fastcgi (или что там у вас используется). Докер для этого не нужен.

docker-compose - это всего лишь утилита для оркестрации, которая позволяет запустить то, что записано в конфигурационном файле.

Наш Яндекс-Кокаин даже более комплексное средство оркестрации с дополнительными возможностями - пользоляет использовать Докер, а также содержит в одном флаконе и средства мониторинга, логгирования, распределения нагрузки по кластеру и пр. и пр. Но вещь весьма специфичная.

Поэтому я бы обратил ваше внимание для оркестрации Докер-контейнеров на продукты HashiCorp, Kubernetes, Mesos.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1. docker-compose решает все проблемы(ну или почти все) ссылка
2. для миграций, сборок, обновления зависимостей через composer/npm/.... можно сделать контейнер(ы) который будет выполнять необходимую команду(например composer install) при запуске docker-compose и выключаться. При необходимости повторного выполнения какой-то операции - можно просто запустить этот контейнер заново. Ну перезапустить весь compose.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
BORK Москва
от 180 000 ₽
ITSumma Иркутск
от 30 000 до 70 000 ₽