Я думаю, что понимаю, чего вы пытаетесь достичь - у вас есть некоторые зависимости между приложениями / службами, которые нужно запускать во время работы над приложением. Я подошел к этому немного по-другому, чем 2 git репо в 1 руб. (Какой TBH, я не уверен, как это будет работать).
Позвольте мне объяснить, как я подошел к этому. Я не могу сказать, что то, что я делаю, это лучший подход, но, похоже, он работает довольно хорошо.
Во-первых, у нас есть "Docker .Зависимости" репо, которое имеет все основные зависимости, которые мы используем (или, по крайней мере, локально эквивалентные зависимости, например, IDP, который мы запускаем в работе, не может быть запущен локально, поэтому я просто использую Keycloak локально). Репо 'Docker .Dependencies' имеет структуру каталогов, как показано ниже. Примечание: это будет подмодуль git в моих репозиториях микросервисов:
Подкаталоги содержат файлы Docker везде, где мне нужно что-то добавить в Базовый официальный образ, например, для Logsta sh, мне нужно установить некоторые плагины, скопировать некоторые конфигурации конвейера.
Также есть несколько файлов yml на уровне root. Это все docker -композитные файлы, которые я могу при необходимости объединить в цепочку, т.е.
docker-compose -f database.yml -f security.yml -f logging.yml up --build
Теперь перейдем к моим репозиториям на микросервисах; которые имеют структуру каталогов следующим образом:
Как уже упоминалось, подкаталог 'Docker .Dependencies' на самом деле является подмодулем git .
Я создал несколько вспомогательных сценариев, включая модуль PowerShell (package-scripts.psm1) и сценарий для (повторной) установки модуля (init.ps1), а также некоторые сценарии NPM ( пакет. json), которые вызывают команды PowerShell, так что я очень легко могу делать такие вещи, как:
npm run dependencies
npm run migrations
как при переносе базы данных npm run services
для запуска микросервисов в docker - et c.
^^ как вы можете видеть в файле packages.json
выше, сценарии PowerShell все параматизированы, поэтому я настраиваюсь так, как требуется для конкретного репо микросервиса. Примечание. Эти вспомогательные сценарии могут быть в другом подмодуле git (что я и планирую сделать). Также я выбрал PowerShell вместо bash, потому что некоторые из наших разработчиков используют Windows для своей среды разработки.
В src
находится источник исходного кода, а также там есть файлы Docker-файлов микросервиса. Как уже упоминалось, я могу запускать свои микросервисы, используя npm run services
, или я могу просто запускать их непосредственно из своей IDE. Требуется немного конфигурации (которая является частью шаблона микросервиса), так как нам нужно все, чтобы «просто работать» для различных настроек компьютера, например, docker рабочий стол на Windows, docker на Linux, docker -машина; запуск микросервиса в контейнере docker и запуск на хост-компьютере ...
Файл Dockerfile микросервиса создается и публикуется в нашем реестре docker в конвейере CI / CD.