# syntax=docker/dockerfile:1 FROM node:22-alpine AS frontend WORKDIR /ui COPY ui/package.json ui/package-lock.json ui/.npmrc ./ RUN npm ci COPY ui/ . RUN npm run build FROM eclipse-temurin:21-jdk-alpine AS build WORKDIR /build COPY .mvn/ .mvn/ COPY mvnw pom.xml ./ RUN --mount=type=cache,target=/root/.m2/repository ./mvnw dependency:go-offline -B COPY src/ src/ COPY --from=frontend /src/main/resources/static/ src/main/resources/static/ RUN --mount=type=cache,target=/root/.m2/repository ./mvnw package -DskipTests -B FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN addgroup -S cameleer && adduser -S cameleer -G cameleer COPY --from=build /build/target/*.jar app.jar USER cameleer EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]