Цей проект демонструє використання NGINX як реверс-проксі для маршрутизації HTTP-запитів між двома сервісами — Постачальником Сервісу (Provider) і Споживачем Сервісу (Consumer).
- Provider: Обчислює квадрат переданого числа.
- Consumer: Надсилає запит до Provider, отримує результат і повертає відповідь клієнту.
Проект використовує Docker Compose для контейнеризації сервісів.
.
├── nginx.conf # Конфігурація NGINX
├── docker-compose.yml # Docker Compose файл для запуску проекту
├── provider/ # Директория з кодом для сервісу Provider
│ ├── provider.py # Код Flask-сервісу Provider
│ ├── Dockerfile # Dockerfile для Provider
│ ├── requirements.txt # Залежності для Python
│ └── start.sh # Скрипт для запуску сервісу
├── consumer/ # Директория з кодом для сервісу Consumer
├── consumer.py # Код Flask-сервісу Consumer
├── Dockerfile # Dockerfile для Consumer
├── requirements.txt # Залежності для Python
└── start.sh # Скрипт для запуску сервісу
- Встановіть Docker і Docker Compose на вашій машині.
-
Клонування репозиторію:
git clone <URL вашого репозиторію> cd <назва папки з проектом>
-
Створення Docker-образів і запуск сервісів:
docker-compose up --build
-
Перевірка доступності сервісів:
- Consumer: http://localhost/consumer/process
- Provider: http://localhost/provider/calculate
Примітка: NGINX маршрутизує запити через
/consumer/
та/provider/
до відповідних бекендів.
- URL:
http://localhost/provider/calculate
- Метод:
POST
- Body (JSON):
{ "number": <число> }
- Приклад відповіді:
{ "result": 16, "time_taken": 0.000123 }
- URL:
http://localhost/consumer/process
- Метод:
POST
- Body (JSON):
{ "number": <число> }
- Приклад відповіді:
{ "consumer_time_taken": 0.41684961318969727, "input": 4, "provider_result": { "result": 16, "time_taken": 7.939338684082031e-05 } }
docker-compose up --build
docker-compose down
- Provider:
docker-compose logs provider
- Consumer:
docker-compose logs consumer
- NGINX:
docker-compose logs nginx