diff --git a/docker-compose.yaml b/docker-compose.yaml
index 9f3dd90..577365c 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,16 +1,42 @@
+version: '3.8'
+
+volumes:
+ postgres_data:
+
services:
db:
image: postgres:16.1
ports:
- "5432:5432"
- volumes:
- - ./volumes/postgres:/var/lib/postgresql/data/
environment:
- - POSTGRES_DB=shareit
- - POSTGRES_USER=dbuser
- - POSTGRES_PASSWORD=12345
+ POSTGRES_USER: dbuser
+ POSTGRES_PASSWORD: 12345
+ POSTGRES_DB: shareit
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
healthcheck:
- test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER
- timeout: 5s
- interval: 5s
- retries: 10
\ No newline at end of file
+ test: ["CMD-SHELL", "pg_isready -U dbuser -d shareit"]
+
+ server:
+ build:
+ context: .
+ dockerfile: server/Dockerfile
+ ports:
+ - "9090:9090"
+ environment:
+ - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/shareit # ← db вместо postgres
+ - SPRING_DATASOURCE_USERNAME=dbuser
+ - SPRING_DATASOURCE_PASSWORD=12345
+ depends_on:
+ - db # ← зависит от db, а не postgres
+
+ gateway:
+ build:
+ context: .
+ dockerfile: gateway/Dockerfile
+ ports:
+ - "8080:8080"
+ environment:
+ - SHAREIT_SERVER_URL=http://server:9090
+ depends_on:
+ - server
\ No newline at end of file
diff --git a/gateway/Dockerfile b/gateway/Dockerfile
new file mode 100644
index 0000000..5a8e692
--- /dev/null
+++ b/gateway/Dockerfile
@@ -0,0 +1,5 @@
+FROM eclipse-temurin:21-jre-jammy
+VOLUME /tmp
+ARG JAR_FILE=gateway/target/*.jar
+COPY ${JAR_FILE} app.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..ef48862
--- /dev/null
+++ b/gateway/pom.xml
@@ -0,0 +1,70 @@
+
+
+
+ ru.practicum
+ shareit
+ 0.0.1-SNAPSHOT
+ ../pom.xml
+
+ 4.0.0
+ gateway
+ jar
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ 5.3.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ ru.practicum.gateway.ShareItAppGateWay
+
+
+
+
+
diff --git a/src/main/java/ru/practicum/shareit/ShareItApp.java b/gateway/src/main/java/ru/practicum/gateway/ShareItAppGateWay.java
similarity index 61%
rename from src/main/java/ru/practicum/shareit/ShareItApp.java
rename to gateway/src/main/java/ru/practicum/gateway/ShareItAppGateWay.java
index 83b60e0..9aa34a1 100644
--- a/src/main/java/ru/practicum/shareit/ShareItApp.java
+++ b/gateway/src/main/java/ru/practicum/gateway/ShareItAppGateWay.java
@@ -1,11 +1,11 @@
-package ru.practicum.shareit;
+package ru.practicum.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class ShareItApp {
+public class ShareItAppGateWay {
public static void main(String[] args) {
- SpringApplication.run(ShareItApp.class, args);
+ SpringApplication.run(ShareItAppGateWay.class, args);
}
}
diff --git a/gateway/src/main/java/ru/practicum/gateway/base/BaseClient.java b/gateway/src/main/java/ru/practicum/gateway/base/BaseClient.java
new file mode 100644
index 0000000..d821430
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/gateway/base/BaseClient.java
@@ -0,0 +1,126 @@
+package ru.practicum.gateway.base;
+
+import org.springframework.http.*;
+import org.springframework.lang.Nullable;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+
+public class BaseClient {
+ protected final RestTemplate rest;
+
+ public BaseClient(RestTemplate rest) {
+ this.rest = rest;
+ }
+
+ protected ResponseEntity