# NEON CRM — Python + PostgreSQL, без веб-фреймворков.
# NF-20: дайджест-пин базового образа (воспроизводимая сборка).
FROM python:3.12-slim@sha256:a6e34c598f2467ed0e9a8d349809fcd8b5c603269512df273a0bb1784edc11b1

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

WORKDIR /app

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

COPY server.py storage.py storage_sqlite.py notes_api.py ./
COPY seed/ ./seed/
COPY index.html ./
COPY css/ ./css/
COPY js/ ./js/

RUN groupadd --system neon && useradd --system --gid neon --create-home neon \
    && chown -R neon:neon /app
USER neon

EXPOSE 47613

HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
    CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:47613/api/healthz', timeout=3).status == 200 else 1)"

CMD ["python", "server.py"]
