DAS_2024_1/agliullov_daniyar_lab_3/readme.md

49 lines
2.1 KiB
Markdown
Raw Normal View History

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
[Видео](https://disk.yandex.ru/d/BGenDWYY6tIGaw)