diff --git a/.env b/.env new file mode 100644 index 0000000..1be41c3 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +MYSQLDB_USER=root +MYSQLDB_ROOT_PASSWORD=Root123 +MYSQLDB_DATABASE=book-store +MYSQLDB_LOCAL_PORT=5432 +MYSQLDB_DOCKER_PORT=3306 +SPRING_LOCAL_PORT=8081 +SPRING_DOCKER_PORT=8080 +DEBUG_PORT=5005 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ca17ae6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +# Builder stage +FROM openjdk:17-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:17-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 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9a62e5f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.8" +services: + + mysqldb: + platform: linux/arm64 + image: mysql:8.4.0 + restart: unless-stopped + env_file: ./.env + ports: + - ${MYSQLDB_LOCAL_PORT}:${MYSQLDB_DOCKER_PORT} + environment: + MYSQL_ROOT_PASSWORD: $MYSQLDB_ROOT_PASSWORD + MYSQL_DATABASE: $MYSQLDB_DATABASE + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 30s + timeout: 30s + retries: 3 + app: + image: book-store + depends_on: + mysqldb: + condition: service_healthy + restart: no + build: . + env_file: ./.env + ports: + - ${SPRING_LOCAL_PORT}:${SPRING_DOCKER_PORT} + - ${DEBUG_PORT}:${DEBUG_PORT} + environment: + - SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE + - SPRING_DATASOURCE_USERNAME=$MYSQLDB_USER + - SPRING_DATASOURCE_PASSWORD=$MYSQLDB_ROOT_PASSWORD + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate + - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 + + + + + diff --git a/pom.xml b/pom.xml index 75144c1..4930538 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,12 @@ test + + org.springframework.boot + spring-boot-docker-compose + test + + org.springframework.boot spring-boot-starter-data-jpa @@ -182,6 +188,11 @@ org.springframework.boot spring-boot-maven-plugin + + + true + + org.liquibase