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)
|