# Build stage FROM maven:3.9-eclipse-temurin-21-alpine AS build WORKDIR /app # Copy Maven files first for better layer caching COPY pom.xml . COPY .mvn .mvn COPY mvnw . # Download dependencies (cached layer) RUN mvn dependency:go-offline -B # Copy source code and build COPY src ./src RUN mvn clean package -DskipTests # Runtime stage FROM eclipse-temurin:21-jre-alpine WORKDIR /app # Create non-root user (required by Hugging Face Spaces) RUN adduser -D -u 1000 appuser # Copy the built jar COPY --from=build --chown=appuser:appuser /app/target/*.jar app.jar # Switch to non-root user USER appuser # Hugging Face Spaces requires port 7860 EXPOSE 7860 # Run the application with optimized JVM settings for containers ENTRYPOINT ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75.0", "-jar", "app.jar"]