diff --git a/.gitignore b/.gitignore
index 549e00a..5eac309 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,4 +30,4 @@ build/
!**/src/test/**/build/
### VS Code ###
-.vscode/
+.vscode/
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 0d97b31..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM openjdk:21-jdk-slim
-WORKDIR /app
-COPY target/shareit-0.0.1-SNAPSHOT.jar app.jar
-EXPOSE 8080
-ENTRYPOINT ["java", "-jar", "app.jar"]
\ No newline at end of file
diff --git a/compose.yaml b/compose.yaml
new file mode 100644
index 0000000..4f62d02
--- /dev/null
+++ b/compose.yaml
@@ -0,0 +1,55 @@
+version: '3.8'
+services:
+ postgres:
+ image: postgres:16
+ container_name: postgres
+ environment:
+ POSTGRES_DB: shareit
+ POSTGRES_USER: progingir
+ POSTGRES_PASSWORD: 12345
+ ports:
+ - "5432:5432"
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
+ networks:
+ - shareit-network
+
+ shareit-server:
+ build:
+ context: ./server
+ dockerfile: Dockerfile
+ container_name: shareit-server
+ ports:
+ - "9090:9090"
+ environment:
+ SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/shareit
+ SPRING_DATASOURCE_USERNAME: progingir
+ SPRING_DATASOURCE_PASSWORD: 12345
+ SPRING_JPA_HIBERNATE_DDL_AUTO: update
+ SPRING_JPA_SHOW_SQL: true
+ SPRING_JPA_OPEN_IN_VIEW: false
+ depends_on:
+ - postgres
+ networks:
+ - shareit-network
+
+ shareit-gateway:
+ build:
+ context: ./gateway
+ dockerfile: Dockerfile
+ container_name: shareit-gateway
+ ports:
+ - "8080:8080"
+ environment:
+ SHAREIT_SERVER_URL: http://shareit-server:9090
+ depends_on:
+ - shareit-server
+ networks:
+ - shareit-network
+
+networks:
+ shareit-network:
+ driver: bridge
+
+volumes:
+ postgres_data:
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index a00b694..0000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-services:
- shareit-server:
- build:
- context: .
- dockerfile: Dockerfile
- container_name: shareit-server
- ports:
- - "8080:8080"
- volumes:
- - ./data:/data # Для сохранения базы H2 на диске
- environment:
- - SPRING_DATASOURCE_URL=jdbc:h2:file:/data/shareit
- - SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.h2.Driver
- - SPRING_DATASOURCE_USERNAME=sa
- - SPRING_DATASOURCE_PASSWORD=
- - SPRING_JPA_HIBERNATE_DDL_AUTO=update
\ No newline at end of file
diff --git a/gateway/Dockerfile b/gateway/Dockerfile
new file mode 100644
index 0000000..b63f0ba
--- /dev/null
+++ b/gateway/Dockerfile
@@ -0,0 +1,4 @@
+FROM eclipse-temurin:21-jre-jammy
+VOLUME /tmp
+ARG JAR_FILE=target/*.jar
+ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
\ No newline at end of file
diff --git a/gateway/pom.xml b/gateway/pom.xml
new file mode 100644
index 0000000..5b3f55f
--- /dev/null
+++ b/gateway/pom.xml
@@ -0,0 +1,87 @@
+
+
+ 4.0.0
+
+ ru.practicum
+ shareit
+ 0.0.1-SNAPSHOT
+
+ shareit-gateway
+ shareit-gateway
+ Gateway for ShareIt application
+
+
+ 21
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.hibernate.validator
+ hibernate-validator
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 17
+ 17
+
+
+
+
+
\ No newline at end of file
diff --git a/gateway/src/main/java/ru/practicum/shareit/ShareItGatewayApp.java b/gateway/src/main/java/ru/practicum/shareit/ShareItGatewayApp.java
new file mode 100644
index 0000000..802387d
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/shareit/ShareItGatewayApp.java
@@ -0,0 +1,12 @@
+package ru.practicum.shareit;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ShareItGatewayApp {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ShareItGatewayApp.class, args);
+ }
+}
\ No newline at end of file
diff --git a/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java b/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
new file mode 100644
index 0000000..9c05759
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
@@ -0,0 +1,57 @@
+package ru.practicum.shareit.booking;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.web.util.DefaultUriBuilderFactory;
+import ru.practicum.shareit.client.BaseClient;
+import ru.practicum.shareit.booking.dto.BookingShortDto;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class BookingClient extends BaseClient {
+ private static final String API_PREFIX = "/bookings";
+
+ @Autowired
+ public BookingClient(@Value("${shareit-server.url}") String serverUrl, RestTemplateBuilder builder) {
+ super(builder.uriTemplateHandler(new DefaultUriBuilderFactory(serverUrl + API_PREFIX))
+ .requestFactory(() -> new HttpComponentsClientHttpRequestFactory())
+ .build());
+ }
+
+ public ResponseEntity