# ============================================================
#  Dockerfile — CRM AI API (Flask + ML)
#  Image : python:3.11-slim
#  Port  : 5000
# ============================================================

FROM python:3.11-slim

# Métadonnées
LABEL maintainer="CAMELSOFT"
LABEL app="crm-ai-api"
LABEL version="1.0"

# Variables d'environnement système
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1

# Répertoire de travail
WORKDIR /app

# ── Dépendances système (psycopg2 a besoin de libpq) ─────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
    libpq-dev \
    gcc \
    curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# ── Dépendances Python (couche cachée séparément) ────────────────────────
COPY requirements.txt .
RUN pip install --upgrade pip && \
    pip install -r requirements.txt

# ── Code source ───────────────────────────────────────────────────────────
# NE PAS copier .env, models/, data/ — montés en volumes Jenkins
COPY app.py .
COPY flask_jwt_middleware.py .

# ── Dossiers montés en volume (vides dans l'image) ───────────────────────
RUN mkdir -p models data

# ── Port exposé ───────────────────────────────────────────────────────────
EXPOSE 5000

# ── Health check Docker natif ─────────────────────────────────────────────
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
    CMD curl -f http://localhost:5000/api/health || exit 1

# ── Lancement ─────────────────────────────────────────────────────────────
CMD ["python", "app.py"]