# ---------- 构建阶段：JDK 25 + Maven ----------
FROM maven:3.9-eclipse-temurin-25 AS build
WORKDIR /build

# 先只复制 pom，利用镜像层缓存加速依赖下载
COPY pom.xml .
RUN mvn -B -ntp dependency:go-offline

COPY src ./src
RUN mvn -B -ntp clean package -DskipTests

# ---------- 运行阶段：JRE 25 ----------
FROM eclipse-temurin:25-jre-alpine

WORKDIR /app

RUN mkdir -p /app/logs /app/config && chmod 755 /app/logs /app/config

COPY --from=build /build/target/iam-api-*.jar app.jar

ENV TZ=Asia/Shanghai \
    SPRING_PROFILES_ACTIVE=prod \
    # netty 4.1 仍使用 sun.misc.Unsafe 内存访问，JDK 25 下显式放行以消除告警
    # -Duser.timezone 独立于操作系统时区库，避免 alpine 镜像里 TZ 不生效导致时间写入 UTC
    JAVA_OPTS="-XX:MaxRAMPercentage=75 -XX:+UseG1GC --sun-misc-unsafe-memory-access=allow -Duser.timezone=Asia/Shanghai"

EXPOSE 8900

HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:8900/actuator/health || exit 1

ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar app.jar"]
