Spaces:
Paused
Paused
| FROM python:3.11-slim | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends ffmpeg curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # ── Layer 1: PyTorch CPU-only (~200 MB instead of ~2.5 GB CUDA) ────────────── | |
| RUN pip install --no-cache-dir \ | |
| torch torchaudio \ | |
| --extra-index-url https://download.pytorch.org/whl/cpu | |
| # ── Layer 2: Core web/API deps (changes rarely → cached) ───────────────────── | |
| COPY backend/requirements-core.txt ./requirements-core.txt | |
| RUN pip install --no-cache-dir -r requirements-core.txt | |
| # ── Layer 3: ML deps (depends on PyTorch already installed) ─────────────────── | |
| COPY backend/requirements-ml.txt ./requirements-ml.txt | |
| RUN pip install --no-cache-dir -r requirements-ml.txt | |
| # ── Layer 4: Application code ──────────────────────────────────────────────── | |
| COPY backend/alembic.ini ./alembic.ini | |
| COPY backend/alembic ./alembic | |
| COPY backend/app ./app | |
| COPY backend/ml ./ml | |
| COPY backend/data ./data | |
| RUN useradd -m appuser && chown -R appuser /app | |
| USER appuser | |
| EXPOSE 7860 | |
| CMD ["sh", "-c", "exec gunicorn app.main:app -w ${WEB_CONCURRENCY:-2} -k uvicorn.workers.UvicornWorker --bind [::]:7860 --timeout 300 --access-logfile -"] | |