FROM python:3.12-slim ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 # Geo + WeasyPrint system deps RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ libpq-dev \ libgdal-dev \ libproj-dev \ libgeos-dev \ libcairo2 \ libpango-1.0-0 \ libpangoft2-1.0-0 \ fonts-dejavu-core \ && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir uv WORKDIR /app COPY pyproject.toml ./ COPY uv.lock* ./ RUN uv sync --frozen --no-dev 2>/dev/null || uv sync --no-dev COPY app ./app COPY alembic.ini* ./ COPY alembic ./alembic 2>/dev/null || true EXPOSE 8000 CMD ["uv", "run", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]