# ==========================
# STAGE 1 : Construction
# ==========================
FROM python:3.11-slim AS builder

WORKDIR /app

# Installer les dépendances système
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev \
    gcc \
    postgresql-client \
    && rm -rf /var/lib/apt/lists/*

# Créer un environnement virtuel
RUN python -m venv /venv
ENV PATH="/venv/bin:$PATH"

# Installer les dépendances
COPY src/app/requirements.txt .   
RUN pip install --no-cache-dir -r requirements.txt


# ==========================
# STAGE 2 : Production
# ==========================
FROM python:3.11-slim AS runtime

# Définir le répertoire de travail
WORKDIR /app

# Installer les bibliothèques système
RUN apt-get update && apt-get install -y --no-install-recommends \
    libpq5 \
    && rm -rf /var/lib/apt/lists/*

# 🔥 Installe curl ici
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*


# Créer un utilisateur non-root
RUN useradd -m -u 1000 devopsuser

# Copier l'environnement virtuel
COPY --from=builder /venv /venv
ENV PATH="/venv/bin:$PATH"

# Copier le code
COPY src/app /app

# Changer les droits
RUN chown -R devopsuser:devopsuser /app
USER devopsuser

# Variables d'environnement
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV ENV=production
ENV HOSTNAME=devops-container
ENV PYTHONPATH="/app"    

EXPOSE 8000

# Lancer l'application
CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--no-access-log"]   