From e0a235fcc5d9fee4b0499a445fd99b3454a3e820 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sat, 20 Dec 2025 04:13:41 +0100 Subject: [PATCH] change Dockerfile for kontor-spring to multistage and add kontor-javalin --- docker-compose.yml | 17 ++++++++++ kontor-javalin/Dockerfile | 31 ++++++++++++++++--- .../main/java/de/thpeetz/kontor/api/Main.java | 8 ++--- kontor-spring/Dockerfile | 24 ++++++++++++-- .../src/main/resources/logback-spring.xml | 2 +- 5 files changed, 70 insertions(+), 12 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 086b985..86a575d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -113,6 +113,23 @@ services: depends_on: postgres: condition: service_healthy + kontor-javalin: + build: + context: ./kontor-javalin + dockerfile: Dockerfile + tags: + - kontor-javalin:0.2.0-SNAPSHOT + image: kontor-javalin:0.2.0-SNAPSHOT + restart: unless-stopped + networks: + - database + - integration + - frontend + ports: + - 8400:8400 + depends_on: + postgres: + condition: service_healthy networks: integration: diff --git a/kontor-javalin/Dockerfile b/kontor-javalin/Dockerfile index 1cfd701..be483c1 100644 --- a/kontor-javalin/Dockerfile +++ b/kontor-javalin/Dockerfile @@ -1,5 +1,28 @@ -FROM alpine/java:21-jdk +# ----------------------------------------------------------------------- # +FROM gradle:9.2.1-jdk AS builder WORKDIR / -ADD build/libs/kontor-spring-0.2.0-SNAPSHOT.jar app.jar -EXPOSE 8000 -CMD ["java", "-jar", "-Dspring.profiles.active=prod", "-Dvaadin.productionMode=true", "app.jar"] +COPY ./api/src/main/ ./api/src/main/ +COPY ./api/build.gradle ./api/ +COPY ./models/src/main/ ./models/src/main/ +COPY ./models/build.gradle ./models/ +COPY ./services/src/main/ ./services/src/main/ +COPY ./services/build.gradle ./services/ +COPY ./build.gradle ./ +COPY ./gradle.properties ./ +COPY ./settings.gradle ./ +COPY ./gradle/libs.versions.toml ./gradle/ +RUN gradle build --no-daemon + +# ----------------------------------------------------------------------- # +FROM alpine/java:21-jdk AS run + +RUN adduser --system appuser +USER appuser + +COPY --from=builder --chown=appuser:appuser /api/build/libs/api-0.2.0-SNAPSHOT.jar app.jar + +EXPOSE 8400 +USER appuser + +CMD ["java", "-jar", "app.jar"] + diff --git a/kontor-javalin/api/src/main/java/de/thpeetz/kontor/api/Main.java b/kontor-javalin/api/src/main/java/de/thpeetz/kontor/api/Main.java index 32ee536..5f887a5 100644 --- a/kontor-javalin/api/src/main/java/de/thpeetz/kontor/api/Main.java +++ b/kontor-javalin/api/src/main/java/de/thpeetz/kontor/api/Main.java @@ -1,16 +1,16 @@ package de.thpeetz.kontor.api; -import com.fasterxml.jackson.databind.ObjectMapper; -import io.javalin.Javalin; import de.thpeetz.kontor.services.api.PersonReader; +import io.javalin.Javalin; +import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.ObjectMapper; -import java.util.ServiceLoader; public class Main { private static Logger logger = LoggerFactory.getLogger(Main.class); - private static short port = 7312; + private static short port = 8400; public static void main(String[] args) { var personReader = ServiceLoader.load(PersonReader.class).findFirst().get(); // <-- Getting an implementation diff --git a/kontor-spring/Dockerfile b/kontor-spring/Dockerfile index 1cfd701..655c32e 100644 --- a/kontor-spring/Dockerfile +++ b/kontor-spring/Dockerfile @@ -1,5 +1,23 @@ -FROM alpine/java:21-jdk +# ----------------------------------------------------------------------- # +FROM gradle:8.7-jdk AS builder WORKDIR / -ADD build/libs/kontor-spring-0.2.0-SNAPSHOT.jar app.jar -EXPOSE 8000 +COPY ./src/main/ ./src/main/ +COPY ./frontend/ ./frontend/ +COPY ./build.gradle ./ +COPY ./gradle.properties ./ +COPY ./settings.gradle ./ +COPY ./gradle/libs.versions.toml ./gradle/ +RUN gradle bootJar --no-daemon + +# ----------------------------------------------------------------------- # +FROM alpine/java:21-jdk AS run + +RUN adduser --system appuser +USER appuser + +COPY --from=builder --chown=appuser:appuser /build/libs/kontor-spring-0.2.0-SNAPSHOT.jar app.jar + +EXPOSE 8100 +USER appuser CMD ["java", "-jar", "-Dspring.profiles.active=prod", "-Dvaadin.productionMode=true", "app.jar"] + diff --git a/kontor-spring/src/main/resources/logback-spring.xml b/kontor-spring/src/main/resources/logback-spring.xml index b085f8c..a8f961d 100644 --- a/kontor-spring/src/main/resources/logback-spring.xml +++ b/kontor-spring/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - +