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 @@ - +