Files
av_Site_repetitor/Dockerfile
T
qa-tester 971e51b6f5 security: закрыть уязвимости аудита (PRJ-6)
- gunicorn вместо dev-сервера Werkzeug; non-root user в Dockerfile
- volume sqlite_data для БД (заявки не теряются при rebuild)
- consultations.db и data/ в .dockerignore (ПДн не попадают в образ)
- Secure-куки по умолчанию (COOKIE_SECURE=1), лимит сессии 12ч
- защитные заголовки: CSP, X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy
- MAX_CONTENT_LENGTH 64КБ
- анти-брутфорс админки: 5 попыток -> блокировка 15 мин + лимит 5/мин
- обязательный чекбокс согласия на обработку ПДн + страница /privacy
- .env.example: понятные плейсхолдеры, COOKIE_SECURE
2026-08-06 16:12:48 +04:00

29 lines
720 B
Docker

# Python 3.12 slim
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
WORKDIR /app
# Сначала зависимости — чтобы кэшировать слой
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Код приложения
COPY . .
# Не dev-режим по умолчанию
ENV FLASK_DEBUG=0
# Не запускать от имени root
RUN useradd --create-home --uid 10001 appuser \
&& mkdir -p /app/data \
&& chown -R appuser:appuser /app
USER appuser
EXPOSE 5000
# Production: gunicorn вместо dev-сервера Werkzeug
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "2", "--timeout", "60", "app:app"]