# syntax=docker/dockerfile:1.7 ARG CUDA_IMAGE=nvidia/cuda:13.0.2-cudnn-devel-ubuntu24.04 ARG UV_VERSION=0.12.3 FROM ghcr.io/astral-sh/uv:${UV_VERSION} AS uv-bin FROM ${CUDA_IMAGE} ARG FISH_SCALES_REVISION=a04c1b63b1a7a670840fb3e97a82c0dbe2a35ded ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ VIRTUAL_ENV=/opt/venv \ PATH=/opt/venv/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ CUDA_HOME=/usr/local/cuda \ TORCH_CUDA_ARCH_LIST=12.0a \ FISH_NVFP4_ROOT=/model \ FISH_NVFP4_BUILD_ROOT=/data/torch-extensions \ PYTHONPATH=/model/runtime \ TTS_PYTHON=/opt/venv/bin/python \ TEMPORARILY_DISABLE_PROTOBUF_VERSION_CHECK=true RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ apt-get update && apt-get install -y --no-install-recommends \ build-essential ca-certificates cmake ffmpeg git git-lfs libsndfile1 \ ninja-build portaudio19-dev python3.12 python3.12-dev python3.12-venv && \ git lfs install --system COPY --from=uv-bin /uv /uvx /usr/local/bin/ COPY runtime/torch-overrides.txt /opt/release/torch-overrides.txt COPY requirements.txt /opt/release/requirements.txt COPY vendor/fish-speech /opt/fish-speech RUN uv venv /opt/venv --python python3.12 && \ uv pip install --python /opt/venv/bin/python \ "setuptools>=75" wheel ninja packaging \ "torch==2.11.0" "torchaudio==2.11.0" --torch-backend=cu130 && \ uv pip install --python /opt/venv/bin/python \ --overrides /opt/release/torch-overrides.txt --torch-backend=cu130 \ /opt/fish-speech -r /opt/release/requirements.txt RUN git init /opt/fish-scales-ops && \ git -C /opt/fish-scales-ops remote add origin https://github.com/fishaudio/fish-scales-ops.git && \ git -C /opt/fish-scales-ops fetch --depth 1 origin "${FISH_SCALES_REVISION}" && \ git -C /opt/fish-scales-ops checkout --detach FETCH_HEAD && \ git -C /opt/fish-scales-ops submodule update --init --recursive --depth 1 RUN --mount=type=cache,target=/root/.cache/uv \ CUTLASS_DIR=/opt/fish-scales-ops/3rdparty/cutlass \ MAX_JOBS=2 TORCH_CUDA_ARCH_LIST=12.0a \ uv pip install --python /opt/venv/bin/python \ --no-build-isolation /opt/fish-scales-ops/python RUN install -m 0644 /opt/fish-speech/.project-root \ /opt/venv/lib/python3.12/site-packages/.project-root && \ /opt/venv/bin/python -c \ "from pathlib import Path; import comfy_kitchen, fish_speech, torch, tools.server.model_manager; from fish_speech.models.dac.modded_dac import DAC; site_packages = Path('/opt/venv/lib/python3.12/site-packages'); assert (site_packages / 'fish_speech/configs/modded_dac_vq.yaml').is_file(); assert list((site_packages / 'fish_scales_ops').glob('_C*.so')); print(torch.__version__, torch.version.cuda)" WORKDIR /data EXPOSE 8080 ENTRYPOINT ["/bin/bash", "/model/launch.sh"]