# Stage 1: Builder for dependencies
FROM python:3.11-slim-bullseye AS builder

WORKDIR /app

# Install uv
RUN pip install uv

# Copy only dependency files first to leverage Docker cache
COPY pyproject.toml ./

# Install dependencies with uv
RUN uv sync --system # --system to install into the system site-packages

# Stage 2: Final image
FROM python:3.11-slim-bullseye

WORKDIR /app

# Copy installed dependencies from builder
COPY --from=builder /usr/local/lib/python3.11/site-packages/ /usr/local/lib/python3.11/site-packages/
# Also copy uv itself
COPY --from=builder /usr/local/bin/uv /usr/local/bin/uv

# Copy application code
COPY server.py ./

# Expose the port Uvicorn will listen on
EXPOSE 8000

# Run the Uvicorn server
# The server.py script runs uvicorn with host 0.0.0.0 and port 8000
CMD ["python", "server.py"]
