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