# Duga Остров — один образ на три службы: шлюз, служба вложений, узел Reticulum.
# Код у служб общий (шлюз и служба вложений читают один индекс аккаунтов),
# а rnsd — точка входа той же библиотеки RNS. Один образ — одно место версии.
FROM python:3.12-slim-bookworm

# ffmpeg — для голосовых сообщений (Opus кодируется внешним кодировщиком).
# ca-certificates — для проверки чужих TLS при превью ссылок.
RUN apt-get update \
 && apt-get install -y --no-install-recommends ffmpeg ca-certificates \
 && rm -rf /var/lib/apt/lists/*

# Отдельный пользователь: службам не нужен root, а том с перепиской должен
# принадлежать не root, иначе при первом запуске — отказ в доступе.
RUN useradd --create-home --uid 10001 duga

WORKDIR /app
COPY obraz/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --root-user-action=ignore -r /app/requirements.txt

# Весь код образа — одним каталогом.
COPY obraz/gateway/ /app/gateway/

RUN mkdir -p /data/gateway /data/uploads /data/feedback /data/nastroyki /data/keys \
 && chown -R duga:duga /data /app

ENV PYTHONUNBUFFERED=1 \
    PYTHONPATH=/app/gateway \
    HOME=/home/duga \
    DUGA_FFMPEG=/usr/bin/ffmpeg \
    DUGA_VAPID=/data/nastroyki/vapid.json

USER duga
WORKDIR /app/gateway
