# Multi-stage build for Socrates application
# Stage 1: Builder
FROM python:3.11-slim as builder

WORKDIR /build

# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    git \
    && rm -rf /var/lib/apt/lists/*

# Copy requirements
COPY requirements.txt .

# Copy application code (note: socrates-api has src/ subdirectory)
COPY socratic_system socratic_system/
COPY socrates-api/src socrates-api/src/
COPY socrates-cli/src socrates-cli/src/

# Install Python dependencies
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
    pip install --no-cache-dir -r requirements.txt

# Stage 2: Runtime
FROM python:3.11-slim

WORKDIR /app

# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Create non-root user
RUN useradd -m -u 1000 socrates

# Copy Python packages from builder
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin

# Copy application code
COPY --chown=socrates:socrates . .

# Create directories for logs and data
RUN mkdir -p /app/logs /app/data && \
    chown -R socrates:socrates /app

# Switch to non-root user
USER socrates

# Set environment variables
ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PATH="/home/socrates/.local/bin:$PATH" \
    PYTHONPATH="/app:/app/socrates-api/src:/app/socrates-cli/src"

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

# Expose ports
EXPOSE 8000

# Default command - start API server
CMD ["python", "-m", "socrates_api.main"]
