be_a_dancer
@be_a_dancer
Backend/Fullstack Developer

Образ докера для сборки микросервисов из разных репозиториев?

Добрый день!

Проблема такая. Существует 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.

Однако, полагаю, что это немного косячный способ. Есть ли альтернативы? Как это можно еще сделать?
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
@qq1
Для dev окружения можно сделать мастер-репозиторий с docker-compose.yml, в него добавить репы с сервисами через git сабмодули. Обычно так делают, если сервисы в разных репах как у вас. Можно еще рассмотреть вариант с моно-репой, у каждого подхода свои плюсы и минусы.
Для продакшена, если это к примеру swarm или kubernetes, нужен будет свой docker registry из которого будут браться образы контейнеров-сервисов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы