# Use official Python slim image FROM python:3.12-slim # Set Python optimizations ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV PIP_NO_CACHE_DIR=1 WORKDIR /usr/src/app # Install system dependencies (PostgreSQL client libraries) RUN apt-get update && apt-get install -y --no-install-recommends \ libpq-dev \ curl \ && rm -rf /var/lib/apt/lists/* # Copy and install Python dependencies COPY requirements.txt ./ RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Copy application code COPY ./app /usr/src/app/app # Create directories for volumes RUN mkdir -p /usr/src/app/storage # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ CMD curl -f http://localhost:80/api/v3/current || exit 1 # Start uvicorn ENV WEB_WORKERS=2 CMD ["sh", "-c", "exec uvicorn app.main:app --host 0.0.0.0 --port 80 --workers $WEB_WORKERS"]