# ===== Stage 1: Build =====
FROM docker.m.daocloud.io/library/maven:3.9.9-eclipse-temurin-17 AS builder

WORKDIR /workspace

# Cache Maven dependencies
COPY 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 mvn dependency:go-offline -B -q

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

# ===== Stage 2: Runtime =====
FROM docker.m.daocloud.io/library/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"

RUN apt-get update \
    && apt-get install -y --no-install-recommends ffmpeg \
    && rm -rf /var/lib/apt/lists/*

# 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"]
