# Use Python 3.13 slim image as base FROM python:3.13-slim as base # Set working directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ curl \ build-essential \ && rm -rf /var/lib/apt/lists/* # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # Create a non-root user RUN useradd -m -u 1000 appuser && \ chown -R appuser:appuser /app # Copy dependency files COPY pyproject.toml uv.lock ./ # Install dependencies RUN uv sync --frozen --no-dev # Copy application code COPY --chown=appuser:appuser . . # Ensure entrypoint script is executable RUN chmod +x /app/docker-entrypoint.sh # Switch to non-root user USER appuser # Expose port EXPOSE 8000 # Set entrypoint ENTRYPOINT ["/app/docker-entrypoint.sh"] # Default command CMD ["uv", "run", "fastapi", "run", "app/main.py", "--host", "0.0.0.0", "--port", "8000"]