.. | ||
nginx | ||
ProjectEntityProject | ||
TaskProject | ||
.dockerignore | ||
docker-compose.yml | ||
readme.md | ||
RVIPLab3.sln |
Лабораторная работа 3 - REST API, Gateway и синхронный обмен между микросервисами
ПИбд-42 || Алейкин Артем
Описание
В данной лабораторной работе мы разворачиваем два микросервиса: ProjectEntityProject - проект содержащий логику работы с сущностью 'Проект - Project'. TaskProject - проект содержащий логику работы с сущностью 'Задача - Task'.
Файлы-конфигурации
- 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/ на соответствующие контейнеры с сервисами.
- 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