# نسخة الجوال من «ورق»: FastAPI + PyMuPDF (+ LibreOffice لتحويل Office اختياريا)
FROM python:3.12-slim

ENV PYTHONUTF8=1 PYTHONDONTWRITEBYTECODE=1 PIP_NO_CACHE_DIR=1 WARAQ_DATA=/data
WORKDIR /app

# LibreOffice (بلا واجهة) لتحويل Word/Excel/PowerPoint إلى PDF على الخادم، وخطوط أساسية
RUN apt-get update && apt-get install -y --no-install-recommends \
      libreoffice-writer libreoffice-calc libreoffice-impress fonts-dejavu-core fonts-noto-core \
    && rm -rf /var/lib/apt/lists/*

COPY mobile/requirements.txt /app/mobile/requirements.txt
RUN pip install -r /app/mobile/requirements.txt

COPY waraq /app/waraq
COPY mobile /app/mobile
# الرخصة والإسنادات تُشحن مع الخدمة: المادة 13 من AGPL تلزم بعرض الشيفرة على مستخدميها
COPY LICENSE ATTRIBUTIONS.txt README.md LICENSING.md pyproject.toml /app/
# مستخدم بلا صلاحيات: الحاوية لا تعمل بـroot، وجذر الملفات للقراءة فقط (compose)، والكتابة في /data و/tmp وبيت المستخدم فقط
RUN rm -rf /app/mobile/data \
    && groupadd -g 10001 waraq && useradd -u 10001 -g 10001 -M -d /home/waraq -s /usr/sbin/nologin waraq \
    && mkdir -p /data /home/waraq && chown -R waraq:waraq /data /home/waraq \
    && chmod -R a-w /app
ENV HOME=/home/waraq
USER waraq

EXPOSE 3092
HEALTHCHECK --interval=30s --timeout=5s CMD python -c "import urllib.request;urllib.request.urlopen('http://127.0.0.1:3092/api/health',timeout=4)" || exit 1
# المنفذ مربوط بـ127.0.0.1 على المضيف فلا يصل إليه إلا nginx؛ وnginx يكتب X-Forwarded-For بنفسه (لا يُلحق ما يرسله العميل)
CMD ["uvicorn", "mobile.server:app", "--host", "0.0.0.0", "--port", "3092", "--workers", "2", "--proxy-headers", "--forwarded-allow-ips", "*"]
