2026-09-21 07:29:38 +03:00
|
|
|
FROM python:3.11-slim
|
|
|
|
|
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
|
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
|
|
|
RIPE_DATA_DIR=/data
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
2026-09-21 07:47:02 +03:00
|
|
|
COPY requirements.txt constraints.txt ./
|
|
|
|
|
RUN pip install --no-cache-dir -c constraints.txt -r requirements.txt
|
2026-09-21 07:29:38 +03:00
|
|
|
|
|
|
|
|
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"]
|