File size: 1,004 Bytes
dcfd6c3
 
 
4a12657
dcfd6c3
 
 
 
 
 
 
 
 
0bb7559
 
dcfd6c3
68ad62c
 
 
 
 
ae5c587
dcfd6c3
 
 
 
68ad62c
dcfd6c3
 
 
 
68ad62c
 
d2de8aa
 
68ad62c
d2de8aa
 
68ad62c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
FROM python:3.10-slim

RUN apt-get update && apt-get install -y \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    ffmpeg \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Pré-télécharger le modèle YOLO ET le copier dans /app/models/
# FIX: sans ça, le modèle est retéléchargé à chaque démarrage
RUN mkdir -p models && \
    python -c "from ultralytics import YOLO; YOLO('yolo11n.pt')" && \
    mv yolo11n.pt models/yolo11n.pt

COPY app.py .
COPY static/ ./static/
COPY templates/ ./templates/

RUN mkdir -p uploads outputs logs

ENV PORT=7860
EXPOSE 7860

# FIX: 1 seul worker (le modèle YOLO n'est pas thread-safe entre workers)
# gthread + 4 threads gère la concurrence sans dupliquer le modèle en RAM
CMD ["gunicorn", "-b", "0.0.0.0:7860", \
     "--timeout", "300", \
     "--workers", "1", \
     "--worker-class", "gthread", \
     "--threads", "4", \
     "app:app"]