49 lines
2.1 KiB
Markdown
49 lines
2.1 KiB
Markdown
|
# Лабораторная работа №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)
|