diff --git a/.gitignore b/.gitignore
index 5eac309..6933e29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,4 +30,7 @@ build/
!**/src/test/**/build/
### VS Code ###
-.vscode/
\ No newline at end of file
+.vscode/
+
+### Docker ###
+/.env
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..9a70779
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,16 @@
+# Builder stage
+FROM openjdk:21-jdk-slim as builder
+WORKDIR application
+ARG JAR_FILE=target/*.jar
+COPY ${JAR_FILE} application.jar
+RUN java -Djarmode=layertools -jar application.jar extract
+
+# Final stage
+FROM openjdk:21-jdk-slim
+WORKDIR application
+COPY --from=builder application/dependencies/ ./
+COPY --from=builder application/spring-boot-loader/ ./
+COPY --from=builder application/snapshot-dependencies/ ./
+COPY --from=builder application/application/ ./
+ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
+EXPOSE 8080
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..670c339
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,34 @@
+version: "3.8"
+
+services:
+ mysqldb:
+ image: mysql:8
+ restart: always
+ environment:
+ MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
+ MYSQL_DATABASE: ${MYSQL_DATABASE}
+ ports:
+ - "${MYSQL_LOCAL_PORT}:${MYSQL_DOCKER_PORT}"
+ healthcheck:
+ test: ["CMD-SHELL", "mysqladmin ping -h localhost -P ${MYSQL_DOCKER_PORT} -u ${MYSQL_USER} -p${MYSQL_ROOT_PASSWORD}"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+
+ app:
+ depends_on:
+ mysqldb:
+ condition: service_healthy
+ image: book-service
+ build: .
+ ports:
+ - "${SPRING_LOCAL_PORT}:${SPRING_DOCKER_PORT}"
+ - "${DEBUG_PORT}:${DEBUG_PORT}"
+ environment:
+ SPRING_APPLICATION_JSON: '{
+ "spring.datasource.url": "jdbc:mysql://mysqldb:${MYSQL_DOCKER_PORT}/${MYSQL_DATABASE}?serverTimezone=UTC",
+ "spring.datasource.username": "${MYSQL_USER}",
+ "spring.datasource.password": "${MYSQL_ROOT_PASSWORD}",
+ "jwt.secret": "${JWT_SECRET}"
+ }'
+ JAVA_TOOL_OPTIONS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index a4ef937..c09636d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -109,6 +109,10 @@
jjwt-jackson
0.12.5
+
+ org.springframework.boot
+ spring-boot-docker-compose
+
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 95dd7a0..63fa4bc 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -10,5 +10,5 @@ spring.jpa.open-in-view=false
server.servlet.context-path=/api
-jwt.expiration=300000
+jwt.expiration=30000000
jwt.secret=${JWT_SECRET}