Как использовать docker в разработке и деплое web-приложения, хранящегося на bitbucket?
Есть некоторое приложение на PHP, исходники которого хранятся на закрытом репозитарии bitbucket. Различные модули подтягиваются через composer.
Обычно деплой на продакшне происходил в несколько шагов:
- установка необходимого программного обеспечения (php, apache, etc.);
- настройка окружения (хост в apache, конфигурирование php.ini, etc.);
- получение кода из репозитария (git clone);
- подтягивание необходимых модулей (composer install).
Зачастую первых два пункта отнимали много времени из-за разных зависимостей от версий, совместимости и т.д. Было принято решение автоматизировать процесс при помощи Docker.
Разобравшись с докером сделал для себя два образа:
1 образ с нужной мне ОС, и с установленным ПО нужных версий;
2 образ билдится на базе первого и содержит в себе конфигурацию серверного софта (подтягиваются конфиги с виртуальными хостами, вносятся изменения в php.ini, создаются системные пользователи).
Вот теперь вопрос. Как используя имеющийся образ создать на его базе контейнер для развертывания самого приложения (чтобы внутри запустить git clone, учитывя, что репозитарий закрыт и необходимо будет авторизоваться; а потом composer install)? Как автоматизировать этот процесс, чтобы после каждого коммита руками не убивать контейнер, и не запускать новый, в котором заново придется стягивать исходники и необходимые модули?
Я сделал так.
- Генерирую ключ в системе;
- Добавляю его как ключ деплоя в своем репозитарии на битбакете;
- При билде докер-образа делаю ADD сгенерированного ключа в нужное место.