DAS_2024_1/aleikin_artem_lab_3/readme.md

99 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа 3 - REST API, Gateway и синхронный обмен между микросервисами
## ПИбд-42 || Алейкин Артем
### Описание
В данной лабораторной работе мы разворачиваем два микросервиса:
ProjectEntityProject - проект содержащий логику работы с сущностью 'Проект - Project'.
TaskProject - проект содержащий логику работы с сущностью 'Задача - Task'.
### Файлы-конфигурации
1. docker-compose
```
services:
nginx:
image: nginx
depends_on:
- projectservice
- taskservice
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- app-network
ports:
- 80:80
projectservice:
build:
context: .
dockerfile: ProjectEntityProject/Dockerfile
networks:
- app-network
ports:
- 5001:8080
taskservice:
build:
context: .
dockerfile: TaskProject/Dockerfile
networks:
- app-network
ports:
- 5002:8080
depends_on:
- projectservice
networks:
app-network:
driver: bridge
```
nginx: Сервис, который работает как обратный прокси-сервер и маршрутизирует запросы к другим сервисам (projectservice и taskservice), слушая на порту 80.
Зависит от двух других сервисов: projectservice и taskservice.
Прокси-сервер использует конфигурацию, предоставленную в nginx.conf.
projectservice: Сервис, отвечающий за логику работы с проектами, доступный на порту 8080 внутри контейнера (проброшен на порт 5001).
Этот сервис будет обрабатывать запросы, связанные с проектами.
taskservice: Сервис, отвечающий за логику работы с задачами, доступный на порту 8080 внутри контейнера (проброшен на порт 5002).
Этот сервис будет обрабатывать запросы, связанные с задачами.
Зависит от projectservice, так как задачи связаны с проектами.
Сервис nginx будет проксировать запросы с путями /projectservice/ и /taskservice/ на соответствующие контейнеры с сервисами.
2. nginx.conf
```
server {
listen 80;
server_name localhost;
location /projectservice/ {
proxy_pass http://projectservice:5001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /taskservice/ {
proxy_pass http://taskservice:5002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
Этот файл конфигурирует Nginx для маршрутизации запросов:
location /projectservice/: Все запросы, начинающиеся с /projectservice/, будут проксироваться к сервису projectservice, который работает на порту 5001. Заголовки, такие как Host, X-Real-IP и X-Forwarded-Proto, устанавливаются для правильной передачи информации о запросе.
location /taskservice/: Все запросы, начинающиеся с /taskservice/, будут проксироваться к сервису taskservice, который работает на порту 5002. Аналогично, заголовки проксируются для корректной передачи данных.
Этот конфигурационный файл гарантирует, что запросы к путям /projectservice/ и /taskservice/ будут перенаправляться на соответствующие сервисы через прокси-сервер Nginx.
### Шаги для запуска:
Переходим в корневую папку всего решения и пишем команду:
```
docker-compose up --build
```
Видео демонстрации работы: https://vk.com/video248424990_456239610?list=ln-Doqjb41FQlfo377LN0