Описание директорий
- ./nginx - конфиг для nginx
- ./package-core - базовый пакет с конфигами
- ./service-api - сервис http api
- ./service-migrations - Миграции и докерфайл который собирает образ с приложением миграций
- ./service-nasa - сервис который качает apod через апи
Для запуска предварительно собираем пакеты service-nasa и service-api (в идеале сборка должна происходить в контейнере, но для экономии времени решил просто примонтировать готовые бинарники) и стартуем docker-compose, сразу создатся бд и запустяться миграции, также единожды выполниться service-nasa
Примечания
- Nginx в качетсве прокси сервера
- В service-api реализовал подогрев данных:
- Из db-repo вытягиваются все данные и загружаются в mem-repo, и затем mem-repo используется как основная репа для полeчения данных.
- Обновление происходит каждые 10сек.
- При желании можно в качестве основной репы использовать db-repo:
- Убрать вызов PreloadService
- В Core.Repositories.Apod закинуть инстанс infrastructure.db.NasaApodRepository
- В контейнере бд пробросил порт, чтобы тестировать с локалки, по хорошему он должен быть закрыт
- Не стал писать воркер для service-nasa, т.к. это можно делать либо через крон, либо через брокер сообщений
- Подрузамеваеться что каждая отдельная папка в корне данного репозитория, должны быть отдельными репозиториями (за исколючением папки nginx, там чисто конфиг). А соответственно service-nasa и service-api должны подключать пакет package-core как репу. Env как мне кажеться должен деплоиться для каждого сервиса отдельно черзе менеджер конфигураций типа ansible, но тут для простоты я просто вынес в общий пакет package-core (Там 2 енва - для запуска с локалки и для запуска в контейнере)