This commit is contained in:
Waloshi6
2026-02-08 14:34:23 +01:00
parent ac8addb65a
commit 7377c00a47
15 changed files with 229 additions and 168 deletions

View File

@@ -1,66 +1,32 @@
# ==========================
# STAGE 1 : Construction
# ==========================
FROM python:3.11-slim AS builder
# Phase de base
FROM python:3.11-slim AS base
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/*
build-essential libpq-dev gcc libpq5 && rm -rf /var/lib/apt/lists/*
# Créer un environnement virtuel
RUN pip install --upgrade pip
COPY src/app/requirements.txt .
RUN python -m venv /venv
ENV PATH="/venv/bin:$PATH"
RUN /venv/bin/pip install --no-cache-dir -r requirements.txt
# Installer les dépendances
COPY src/app/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ==========================
# STAGE 2 : Production
# ==========================
# Phase finale
FROM python:3.11-slim AS runtime
# Définir le répertoire de travail
WORKDIR /app
WORKDIR /app # 🔴 Ajouté : définit le répertoire de travail
# 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
COPY --from=base /venv /venv
ENV PATH="/venv/bin:$PATH"
# Copier le code
COPY src/app /app
COPY TpDevOpsProject.md /app/TpDevOpsProject.md
# Changer les droits
RUN chown -R devopsuser:devopsuser /app
RUN useradd -m -u 1000 devopsuser && 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"]
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--app-dir", "/app"]