FROM maven:3.9-eclipse-temurin-21-alpine AS builder WORKDIR /app COPY pom.xml . COPY backend/pom.xml backend/pom.xml RUN mvn dependency:go-offline -B -pl backend -am COPY backend/ backend/ RUN mvn package -B -pl backend -DskipTests RUN java -Djarmode=layertools -jar backend/target/*.jar extract --destination extracted FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN addgroup -S appgroup && adduser -S appuser -G appgroup COPY --from=builder /app/extracted/dependencies/ ./ COPY --from=builder /app/extracted/spring-boot-loader/ ./ COPY --from=builder /app/extracted/snapshot-dependencies/ ./ COPY --from=builder /app/extracted/application/ ./ RUN mkdir -p /app/uploads && chown -R appuser:appgroup /app USER appuser EXPOSE 8080 ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]