FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /app

# Install dependencies first for better layer caching.
COPY pyproject.toml ./
RUN mkdir politrack && touch politrack/__init__.py && pip install -e . && rm -rf politrack

# Editable install keeps the package at /app/politrack, so migrations/ and
# config/ resolve relative to it.
COPY politrack ./politrack
COPY migrations ./migrations
COPY config ./config

# /data/raw holds the raw-response archive (mount a volume there).
RUN useradd --system --uid 1000 politrack && mkdir -p /data/raw && chown -R politrack /data
USER politrack

EXPOSE 8000 8001
CMD ["politrack", "api"]
