FROM nvidia/cuda:12.8.0-runtime-ubuntu22.04 # Avoid interactive prompts ENV DEBIAN_FRONTEND=noninteractive ENV PYTHONUNBUFFERED=1 # System deps RUN apt-get update && apt-get install -y --no-install-recommends \ python3.11 python3.11-venv python3-pip git ffmpeg libsndfile1 \ && rm -rf /var/lib/apt/lists/* RUN ln -sf /usr/bin/python3.11 /usr/bin/python3 && \ ln -sf /usr/bin/python3.11 /usr/bin/python WORKDIR /app # 1. Install PyTorch for CUDA 12.8 (Blackwell / Ada / Ampere) RUN pip install --no-cache-dir \ torch torchaudio --index-url https://download.pytorch.org/whl/cu128 # 2. Install chatterbox WITHOUT its pinned torch (--no-deps), then install remaining deps COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 3. Copy app + LoRA weights COPY app.py . COPY checkpoints/ checkpoints/ COPY tokenizer/ tokenizer/ COPY conds/ conds/ # Pre-download base Chatterbox weights at build time (optional, ~2GB) # Uncomment to bake weights into image (larger image, faster cold start): # RUN python3 -c "from chatterbox.mtl_tts import ChatterboxMultilingualTTS; ChatterboxMultilingualTTS.from_pretrained('cpu')" EXPOSE 7860 CMD ["python3", "app.py", "--device", "auto"]