# 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"]