Spaces:
Sleeping
Sleeping
| # 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"] | |