# Multi-stage build for MTG Search
# Stage 1: Build backend and frontend
FROM eclipse-temurin:21.0.2-jdk as builder

WORKDIR /build

# Install Node.js
RUN apt-get update && apt-get install -y curl && \
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    rm -rf /var/lib/apt/lists/*

# Copy gradle files
COPY gradle gradle
COPY gradlew .
COPY build.gradle.kts .
COPY settings.gradle.kts .
COPY gradle.properties .

# Copy backend source
COPY backend backend

# Copy frontend source
COPY frontend frontend

# Build backend
WORKDIR /build/backend
RUN ../gradlew build -x test

# Build frontend
WORKDIR /build/frontend
RUN npm ci && npm run build

# Stage 2: Runtime
FROM eclipse-temurin:21.0.2-jre

WORKDIR /app

# Install curl for health checks
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

# Copy built backend jar
COPY --from=builder /build/backend/build/libs/*.jar app.jar

# Expose port
EXPOSE 8080

# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
    CMD curl -f http://localhost:8080/api/v1/auth/health || exit 1

# Run application
ENTRYPOINT ["java", "-jar", "app.jar"]
