From 3113eee4149ff735bfb44b72a35c5951758b39bc Mon Sep 17 00:00:00 2001 From: Constantin Simonis Date: Wed, 12 Feb 2025 11:13:18 +0100 Subject: [PATCH] chore(deployment): add deployment for backend --- backend/.docker/Dockerfile | 32 +++++++++++++++++++ backend/.dockerignore | 2 ++ .../src/main/resources/application.properties | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 backend/.docker/Dockerfile create mode 100644 backend/.dockerignore diff --git a/backend/.docker/Dockerfile b/backend/.docker/Dockerfile new file mode 100644 index 0000000..1b2524c --- /dev/null +++ b/backend/.docker/Dockerfile @@ -0,0 +1,32 @@ +# First stage: Build the application +FROM gradle:jdk22 AS builder + +WORKDIR /app + +# Copy only Gradle wrapper and configuration files first (for caching efficiency) +COPY gradlew build.gradle.kts settings.gradle.kts ./ +COPY gradle gradle + +# Give execute permissions to Gradle wrapper +RUN chmod +x gradlew + +# Download dependencies first (improves caching) +RUN ./gradlew dependencies + +# Copy the rest of the project files +COPY src src + +# Build the application (skipping tests for faster build) +RUN ./gradlew clean build -x test + +# Second stage: Run the application +FROM openjdk:22-jdk-slim + +WORKDIR /app + +# Copy the built JAR from the first stage +COPY --from=builder /app/build/libs/*.jar app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..f06dfad --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,2 @@ +.gradle +build \ No newline at end of file diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 938ce25..8271ece 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.datasource.url=jdbc:postgresql://localhost:5432/postgresdb +spring.datasource.url=jdbc:postgresql://$DB_HOST}:5432/postgresdb spring.datasource.username=postgres_user spring.datasource.password=postgres_pass server.port=8080