# --- Etapa 1: build ---
# Compila el jar con el Gradle wrapper del proyecto (no requiere Gradle en host).
FROM eclipse-temurin:21-jdk AS build
WORKDIR /app

# Primero solo lo necesario para resolver dependencias y aprovechar la caché de capas.
COPY gradlew settings.gradle build.gradle ./
COPY gradle ./gradle
RUN chmod +x gradlew && ./gradlew --no-daemon dependencies > /dev/null 2>&1 || true

# Ahora el código fuente y el empaquetado.
COPY src ./src
RUN ./gradlew --no-daemon clean bootJar

# --- Etapa 2: runtime ---
# Imagen mínima con JRE 21. Usuario no-root y zona horaria del negocio.
FROM eclipse-temurin:21-jre AS runtime
WORKDIR /app
ENV TZ=Europe/Madrid

# Usuario sin privilegios.
RUN useradd --system --uid 10001 --create-home appuser
USER appuser

COPY --from=build /app/build/libs/*.jar app.jar

EXPOSE 8080

# Healthcheck contra el endpoint de Actuator (solo health expuesto).
HEALTHCHECK --interval=15s --timeout=3s --start-period=40s --retries=5 \
  CMD wget -qO- http://localhost:8080/actuator/health | grep -q '"status":"UP"' || exit 1

ENTRYPOINT ["java", "-jar", "/app/app.jar"]
