Доброго времени суток.
Хочу автоматизировать процесс тестирования и deploy'я для web приложений.
Сейчас этот процесс состоит из ручного вызова deploy.sh на сервере.А тестов и вовсе нет.
Что я хочу:
1. Делаю изменения в коде , делаю git commit && git push
2. Continuous Integration сервер забирает свежую версию веток production(master) и dev.
Если есть изменения , тестирует новый код , делает сборку кода готовую для deploy'я (минификации , очистки и т.д.) и заливает на нужные сервера.
И вот в этот процесс хочу внедрить docker.
Но мне не понятно:
1. После того как конечная сборка кода была сделана , нужно делать заново "docker build ... / docker commit ..." с новым кодом , делать push в docker repository , а затем обновлять (docker pull) все контейнеры на серверах на новые и перезапускать их ( "docker run ..." ) ?
Или код должен попадать в контейнеры на production/test серверах другими способами ( git pull , deb/rpm ) ?
2. Как лучше сделать контейнер базы данных для production/test ?
Читал про
data containers , что можно делать отдельный контейнер , где будут храниться сами данные базы.
Но тут мои слабые знания в области ОС и файловых систем не могут дать мне на ответ - лучше ли использовать хостовую систему для хранения данных базы (docker run -v ... ) или всё же использовать data container ( docker run -volumes-from) ?
Будет ли падать скорость работы при использование этих "синхронизаций" файлов ?
Я понимаю , что нет волшебного рецепта. Хотелось бы использовать свежие технологии и решить проблему автоматизации процесса "от git push на рабочем ноуте до обновлённого сайта на production/test". Так же хотелось бы легко подключать новые сервера и делать мониторинг всех системы.
Спасибо за внимание :)