Есть приложение на php. Работу над ней ведут несколько разработчиков. Код лежит в gitlab репозитории. Сейчас у каждого разработчика есть своя виртуальная машина, там установлены nginx, postgres, php-fpm. Разработчики код заливают по sftp. Все это хорошо работает. Но микросервисов становится много и нужна какая-та автоматизация запуска приложения.
Сейчас хочется все перевести в docker. Мы собрали образ на основе php7-fpm. Нужно чтобы контейнер содержал код из мастер ветки и при мердже в эту ветку автоматом собирался. Это мы настроим через gitlab ci.
Вот у нас есть контейнер с кодом внутри, чтобы запустить нужно прописать конфиги в .env файле и запустить его с помощью docker-compose. Все работает.
Но как теперь разработчику вести разработку? Допустим он изменил файл index.php, как теперь измененный файл засунуть в docker контейнер? Тут я вижу 2 варианта:
- volume папка. Т.е. папка с кодом приложения шарится между хост машиной (хост машиной будет виртуалка разработчиков)
- Подключение по ssh к контейнеру и заливка по sftp
У первого пункта есть несколько недостатков:
- volume папка внутри контейнера создается от имени root. В код приложения должен и работает от имени обычного пользователя.
- Если эта папка есть в контейнера, то она удаляется и создается с нуля. Т.е. если расшарим папку с кодом, то код просто удалится
В ENTRYPOINT в Dockerfile можно засунуть bash скрипт файл в котором можно будет делать манипуляции с папками.
У второго пункта пока не знаю проблем.
Еще раз вопрос: как заливать изменения кода при разработке программисту в работающий контейнер?
Желательно решить вопрос так чтобы программист не парился с бильдингом docker.
Как решаете это Вы?