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}