# syntax=docker/dockerfile:1.7 FROM node:22-alpine AS frontend-build WORKDIR /app/frontend COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build FROM maven:3.9.9-eclipse-temurin-21 AS backend-build WORKDIR /app COPY backend/pom.xml backend/ RUN --mount=type=cache,target=/root/.m2 mvn -f backend/pom.xml -q -DskipTests dependency:go-offline COPY backend/ backend/ COPY --from=frontend-build /app/frontend/dist/ backend/src/main/resources/static/ RUN --mount=type=cache,target=/root/.m2 mvn -f backend/pom.xml -q -DskipTests package spring-boot:repackage FROM eclipse-temurin:21-jre-alpine AS runtime WORKDIR /app COPY --from=backend-build /app/backend/target/app-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app/app.jar"]