FROM python:3.11-slim ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ RIPE_DATA_DIR=/data WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -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"]