.. | ||
device_service | ||
nginx | ||
user_service | ||
docker-compose.yml | ||
readme.md |
Лабораторная работа №3: REST API, шлюз и синхронный обмен данными между микросервисами
Задание реализовать два микросервиса связанные единой базой и сущностями один ко многим
- Первый микросервис user предоставляет методы для регистрации авторизации и выхода пользователей
- Второй микросервис реализует сущность устройства, которые связанные с пользователями связью многие ко многим
Реализация
Оба микросервиса написаны на fastapi и развернуты на вебсервере uvicorn. В самом докере развертывание осущетсвляется через веб сервер nginx, который осуществляет роль прокси, прослушивая 80 http порт и перенправляя запрос на тот или иной микросервис
Для корректной работы swagger-а необходимо перенести location из nginx.conf в fastapi, чтобы ему был известен корневой путь, для построения документации
app = FastAPI( title="Smart lock", root_path="/devices" )
`location /devices/ {
proxy_pass http://device_service:8001;
}`
Развертывание
В корневую папку добавляем файл .env, где указываем значение переменных среды
Пример файла:
`DB_HOST = localhost DB_PORT = 5432 DB_NAME = DB_USER = postgres DB_PASS = 1234
SECRET_AUTH_TOKEN = 1 SECRET_VERIFICATE_TOKEN = 1 SECRET_DEVICE_AUTH_TOKEN = 1
DEVICE_START_COUNTER = 1
STATIC_URL = https://testapi.danserver.keenetic.name/static/`
Далее указываем:
docker-compose up --build