Каким будет хороший докерский рабочий процесс webdev?
У меня есть предчувствиедокер может значительно улучшить мой рабочий процесс webdev - но у меня нетМне вполне удалось понять, как подойти к проекту, добавив докер в стек.
Основной программный стек будет выглядеть так:
Программного обеспеченияОбраз (ы) Docker, предоставляющий пользовательский стек LAMP
Apache с несколькими модулямиMYSQLPHPНекоторые CMS, напримерSilverStripeGIT
WorkflowЯ мог бы представить, что рабочий процесс выглядит примерно так:
развитиеНапишиDockerfile
который определяет LAMP-контейнер, отвечающий указанным выше требованиямREQ: машина должна запустить apache / mysql сразу после загрузкиСоздайте образ докераСкопируйте файлы, необходимые для запуска CMS, например, в.~/dev/cmsdir
Положил~/dev/cmsdir/
под контролем версийЗапустите докер-контейнер и как-нибудь смонтируйте~/dev/cmsdir
в/var/www/
на контейнереЗаполните базу данныхРаботать в/dev/cmsdir/
Совершить & закрыть докер контейнерразвертываниеНастройте удаленный хост (например, с ansible)Отправить изображение контейнера на удаленный хостполучатьcmsdir
-проект через gitЗапустите Docker-контейнер, извлеките базу данных и смонтируйтеcmsdir
в/var/www
Теперь, на бумаге все выглядит довольно хорошо, НО я не совсем уверен, будет ли это вообще правильным подходом.
Вопросы:При локальном развитии, как мне заставить базу данных сохраняться между перезагрузками экземпляра контейнера? Или мне нужно будет запускать sql-dump каждый раз перед вращением контейнера?
Должен ли я иметь отдельные экземпляры контейнера для базы данных и сервера apache? Или было бы достаточно иметь один контейнер для описанного выше варианта использования?
При использовании отдельных контейнеров для базы данных и сервера, как я могу автоматизировать их вращение вверх и вниз одновременно?
Как бы я на самом деле смонтировать/dev/cmsdir/
в контейнеры/var/www/
-directory? Должен ли я использовать-объемы данных за это?
Я пропустил какие-либо подводные камни? Что-нибудь, что может быть упрощено?