# ===== Stage 1: Build =====
FROM eclipse-temurin:17-jdk-jammy AS builder

WORKDIR /workspace

# Cache Maven dependencies
COPY .mvn/ .mvn/
COPY mvnw pom.xml ./
COPY yaoai-common/pom.xml yaoai-common/
COPY yaoai-domain/pom.xml yaoai-domain/
COPY yaoai-security/pom.xml yaoai-security/
COPY yaoai-billing/pom.xml yaoai-billing/
COPY yaoai-storage/pom.xml yaoai-storage/
COPY yaoai-ai-core/pom.xml yaoai-ai-core/
COPY yaoai-ai-providers/pom.xml yaoai-ai-providers/
COPY yaoai-agent/pom.xml yaoai-agent/
COPY yaoai-pipeline/pom.xml yaoai-pipeline/
COPY yaoai-task/pom.xml yaoai-task/
COPY yaoai-media/pom.xml yaoai-media/
COPY yaoai-api/pom.xml yaoai-api/
COPY yaoai-admin/pom.xml yaoai-admin/
COPY yaoai-worker/pom.xml yaoai-worker/
COPY yaoai-bootstrap/pom.xml yaoai-bootstrap/
COPY yaoai-test/pom.xml yaoai-test/

RUN ./mvnw dependency:go-offline -B -q

# Build
COPY . .
RUN ./mvnw package -pl yaoai-bootstrap -am -DskipTests -B -q

# ===== Stage 2: Runtime =====
FROM eclipse-temurin:17-jre-jammy

LABEL maintainer="YaoAI Team <yaoke251@gmail.com>"
LABEL org.opencontainers.image.title="YaoAI Comic Studio"
LABEL org.opencontainers.image.version="0.1.0"

# Non-root user
RUN groupadd -r yaoai && useradd -r -g yaoai yaoai

WORKDIR /app

COPY --from=builder /workspace/yaoai-bootstrap/target/*.jar app.jar

RUN mkdir -p logs && chown -R yaoai:yaoai /app

USER yaoai

EXPOSE 8080

ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -Djava.security.egd=file:/dev/./urandom"

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