Добрый день!
Проблема такая. Существует legasy-архитектура, которая включает в себя 7 различных сервисов, каждый из которых находится в своем репозитории на Bitbucket и не имеет в своем составе Docker-а. Необходимо собрать такой образ, который позволит запускать определенные версии (в зависимости от ветки и состояния в гите, в том числе, локальных изменениях) каждого отдельного модуля.
К какому решению я пришел. Существует примерно такая структура файлов:
| etc #Конфиги для загрузки nginx, mysql, redis, fpm и т.п.
| services
| - service1
| - - src
| - - Dockerfile
| docker-compose.yml
Что я делаю.
Для запуска всей группы - нам нужно сначала стянуть в services в каждую подпапку (service1, service2) исходный код для соответствующих проектов (желательно и этот этап автоматизировать). Затем для каждого образа у меня имеется докерфайл (и его нужно тоже запихнуть в репозитории, но это потребует изменений на сервере).
docker-compose создает 7 различных контейнеров - по одному на каждый из проектов из Dockerfile для каждого из них + redis + mysql. Есть внутренняя подсеть для всех проектов - project и есть проброшенные наружу порты
То есть мы стучимся в localhost:8080 - project1, localhost:8081 - project2.
Однако, полагаю, что это немного косячный способ. Есть ли альтернативы? Как это можно еще сделать?