FROM python:3.11-slim

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    RIPE_DATA_DIR=/data

WORKDIR /app

COPY requirements.txt constraints.txt ./
RUN pip install --no-cache-dir -c constraints.txt -r requirements.txt

COPY api_server.py cidr_collector.py collector_daemon.py db.py formatters.py storage.py healthcheck.py ./

# Без root; том /data создаётся с владельцем ripe (именованный том наследует его при первом создании)
RUN useradd --system --uid 10001 --no-create-home ripe \
    && mkdir /data && chown ripe /data
USER ripe
VOLUME /data

EXPOSE 8000

# exec-форма: SIGTERM доходит до процесса. Сборщик переопределяет команду в docker-compose.yml
CMD ["uvicorn", "api_server:app", "--host", "0.0.0.0", "--port", "8000"]
