# Multi-stage build for da-autodelete microservice # Build stage FROM openjdk:21-jdk-slim AS build # Set working directory WORKDIR /app # Copy gradle files first for better caching COPY gradlew . COPY gradle gradle COPY build.gradle.kts . COPY settings.gradle.kts . COPY gradle.properties . # Fix file permissions for Linux container (Windows files lose permissions) RUN chmod +x gradlew && \ chmod +x gradle/wrapper/gradle-wrapper.jar && \ chmod +x gradle/wrapper/gradle-wrapper.properties # Download dependencies RUN ./gradlew dependencies --no-daemon # Copy source code COPY src src # Build the application RUN ./gradlew build -x test --no-daemon # Runtime stage FROM openjdk:21-slim # Install curl for health checks RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Copy the built JAR from build stage COPY --from=build /app/build/libs/*.jar app.jar # HF Spaces requires running as user with UID 1000 RUN useradd -m -u 1000 -s /bin/bash appuser && \ chown -R appuser:appuser /app USER appuser # Expose the service port (HF Spaces will map this to the configured app_port) EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8080/actuator/health || exit 1 # Run the application CMD ["java", "-jar", "app.jar"]