# Dockerfile for Voicebox with NVIDIA GPU support (CUDA) FROM nvidia/cuda:12.1.1-runtime-ubuntu22.04 # Prevent interactive prompts during build ENV DEBIAN_FRONTEND=noninteractive ENV TZ=UTC WORKDIR /app # Install Python 3.12 RUN apt-get update && apt-get install -y \ software-properties-common \ && add-apt-repository ppa:deadsnakes/ppa \ && apt-get update && apt-get install -y \ python3.12 \ python3.12-dev \ python3-pip \ ffmpeg \ curl \ tzdata \ && rm -rf /var/lib/apt/lists/* # Set Python 3.12 as default RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \ update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1 # Copy backend COPY backend/ /app/backend/ COPY providers/ /app/providers/ # Copy pre-built web UI COPY web/dist/ /app/web/dist/ # Install PyTorch with CUDA support first RUN python -m pip install --upgrade pip && \ pip install --no-cache-dir \ torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # Install remaining dependencies RUN pip install --no-cache-dir \ fastapi uvicorn[standard] pydantic sqlalchemy alembic \ transformers accelerate huggingface_hub \ librosa soundfile numpy python-multipart Pillow \ qwen-tts # Create data directory RUN mkdir -p /app/data # Health check HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=40s \ CMD curl -f http://localhost:8000/health || exit 1 EXPOSE 8000 # Run server with web UI CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]