Описание к данной работе REST API сервер Балансировщик нагрузки Упаковка приложения в Docker-контейнер Запуск проекта в Docker Compose
- REST API сервер Сервер должен принимать HTTP запросы на порт :6080 и реализовывать функционал CRUD (Create, Read, Update, Delete) по следующим конечным точкам:
/api/v1/contact /api/v1/group Каждая конечная точка должна обрабатывать HTTP запросы типа POST, GET, PUT, DELETE и вызывать для них соответствующие функции Create, Read, Update, Delete для объектов Contact и Group.
!!! Функционал обработки данных реализовывать не нужно !!! Все функции должны уметь просто принимать на вход структуру и возвращать в качестве ответа пустую структуру нужного типа.
(перевожу на русский язык: просто реализуем функции "заглушки")
Для реализации кода сервера можно использовать любой удобный для вас язык программирования.
Структура объекта Contact type Contact struct { ID int Username string GivenName string FamilyName string Phone []struct{ TypeID int CountryCode int Operator int Number int } Email []string Birthdate date } Структура объекта Group type Group struct { ID id Title string Description string Contacts []int } 2. Балансировщик нагрузки В качестве балансировщика используем сервер NGINX.
запросы /api/v1/contact должны распределяться между тремя запущенными контейнерами с приложением запросы /api/v1/group должны проксироваться в один контейнер с приложением Всего должны быть запущены три контейнера с приложением.
- Упаковка приложения в Docker-контейнер Из исходных кодов программы необходимо собрать готовые для запуска Docker контейнеры.
!!! Сборка контейнеров может отличаться в зависимости от использования типа языка (интерпретируемый или компилируемый).
- Запуск проекта в Docker Compose В проекте Docker Compose необходимо запустить сервис с настроенным балансировщиком NGINX и три экземпляра сервиса с контейнером приложения.
Rest API сервер написанный на Python с использованием FastAPI. Проект был разработан в качестве лабораторной работы по дисциплине "Микросервисная архитектура" студентом 2 курса специальности 09.02.01 "Компьютерные системы и комплексы".
python 3.12dockernginxfastapiuvicornpydantic
Пересобираете и запускаете контейнеры с помощью команды:
docker-compose up --buildПосле у вас появится 5 контейнеров:
- 4 экземляра сервиса
- Балансировщик nginx
Сделайте запрос через Nginx или вставьте URL-адрес страницы
curl http://localhost/api/v1/contact/Запустите главный скрипт "main.py" и перейдите по ссылке: http://127.0.0.1:6080
В открывшейся странице выберите одну из предложенный ссылок:

Откройте один из файлов cmd/contact.py или cmd/group.py
В самом конце кода будет написано основное тело запроса. Можете убрать коментарии и наблюдать за изменениями на странице или в консоли VS Code.
C:.
│ .env
│ compose.yaml
│ Dockerfile
│ README.md
│ requirements.txt
│
├───app
│ │ models.py
│ │ __init__.py
│ │
│ └───__pycache__
│ __init__.cpython-312.pyc
│ __init__.cpython-313.pyc
│
├───cmd
│ │ main.py
│ │ __init__.py
│ │
│ ├───routers
│ │ │ contact.py
│ │ │ group.py
│ │ │ __init__.py
│ │ │
│ │ └───__pycache__
│ │ __init__.cpython-313.pyc
│ │
│ └───__pycache__
│ main.cpython-313.pyc
│ __init__.cpython-313.pyc
│
├───nginx
│ Dockerfile
│ nginx.conf
│
└───templates
index.html
Python 3.12-slimHTMLFastAPIUvicornPydanticDockerDockerHUBPygameVisual Studio Code
Вся структура работы в ветке master.Основной код находится в файле main.py.
sma1kyyy001@gmail.com - mail.sma1kyyy - telegramm.
Планирую доработать данный проект до идеала не из побуждения для сдачи проекта по предмету, а из личных соображений и принципов. Хочу доработать управление, графику и сам интерфейс.