FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PORT=7860 \ MODEL_ID=hexgrad/Kokoro-82M \ DEFAULT_VOICE=af_heart \ HF_HOME=/app/.cache/huggingface \ TRANSFORMERS_CACHE=/app/.cache/huggingface WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ libsndfile1 \ ffmpeg \ espeak-ng \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt ./requirements.txt RUN pip install --no-cache-dir --upgrade pip \ && pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu -r requirements.txt COPY . . RUN mkdir -p /app/.cache/huggingface \ && python - <<'PY' import os from huggingface_hub import snapshot_download repo = os.environ['MODEL_ID'] cache_dir = '/app/.cache/huggingface' path = snapshot_download( repo_id=repo, repo_type='model', cache_dir=cache_dir, allow_patterns=['*.json', '*.txt', '*.pt', '*.bin', '*.safetensors', 'tokenizer*', 'voices/*'], local_dir_use_symlinks=False, ) print(path) PY EXPOSE 7860 CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-7860}"]