DAS_2024_1/agliullov_daniyar_lab_3
2024-12-31 08:10:29 +04:00
..
device_service agliullov_daniyar_lab_3 is ready 2024-12-31 08:10:29 +04:00
nginx agliullov_daniyar_lab_3 is ready 2024-12-31 08:10:29 +04:00
user_service agliullov_daniyar_lab_3 is ready 2024-12-31 08:10:29 +04:00
docker-compose.yml agliullov_daniyar_lab_3 is ready 2024-12-31 08:10:29 +04:00
readme.md agliullov_daniyar_lab_3 is ready 2024-12-31 08:10:29 +04:00

Лабораторная работа №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

Видео