## Лабораторная работа №3, ПИбд-42 Тепечин Кирилл

### Сервисы
* `opop-service`
* `document-service`

### Синхронный обмен между микросервисами
Синхронное взаимодействие осуществляется через `RestTemplate`

Пример взаимодействия:

````java
RestTemplate restTemplate = new RestTemplate();
String URL = "http://document-service:8081/document/";
restTemplate.getForObject(URL+ opopDto.getDocumentId(), DocumentInfo.class)
````

### Докерфайлы

````dockerfile
FROM eclipse-temurin:17-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
````
### docker-compose файл
````yaml
version: '3'
services:
  opop-service:
    build:
      context: /opop-service
      dockerfile: Dockerfile
      args:
        JAR_FILE: build/libs/*.jar
    ports:
      - "8080:8080"
    networks:
      - my-network
    environment:
      server.forward-headers-strategy: framework

  document-service:
    build:
      context: /document-service
      dockerfile: Dockerfile
      args:
        JAR_FILE: build/libs/*.jar
    ports:
      - "8081:8081"
    networks:
      - my-network
    environment:
      server.forward-headers-strategy: framework

  nginx:
    image: nginx
    ports:
      - "80:80"
    networks:
      - my-network
    volumes:
      - ./nginx-conf:/etc/nginx/conf.d
    depends_on:
      - opop-service
      - document-service

networks:
  my-network:
    driver: bridge
````

### nginx.conf
````
server {
    listen 80;

    location /opop-service/ {
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Prefix '/opop-service';
        proxy_pass http://opop-service:8080/;
    }

    location /document-service/ {
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Prefix '/document-service';
        proxy_pass http://document-service:8081/;

    }
}
````

### Ссылка на видео
https://vk.com/video170089763_456239482?list=ln-0DBU1KuruzjrZvKRLE