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