Namespace
fishaudio
Image / Tag
fish-speech:webui-cpu-nightly
Content Digest
sha256:2e655f394c4529cf5aa8ee8be6742bae393405fbfb58915c7f094b91f0b69c80
Details
Created

2026-10-10 07:44:33 UTC

Size

840 MB

Content Digest
Environment
BACKEND

cpu

DEBIAN_FRONTEND

noninteractive

DECODER_CHECKPOINT_PATH

checkpoints/s2-pro/codec.pth

DECODER_CONFIG_NAME

modded_dac_vq

GPG_KEY

7169605F62C751356D054A26A821E680E5FA6305

GRADIO_SERVER_NAME

0.0.0.0

GRADIO_SERVER_PORT

7860

LANG

C.UTF-8

LLAMA_CHECKPOINT_PATH

checkpoints/s2-pro

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONDONTWRITEBYTECODE

1

PYTHONUNBUFFERED

1

PYTHON_SHA256

c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a

PYTHON_VERSION

3.12.15

UV_EXTRA

cpu


Layers

[#000] sha256:0f1057e9e642fd25f779db396724d1413a278ac86161f2f1e341bed43ed6beea - 2.94% (24.7 MB)

[#001] sha256:5c079aa6ca7ff40ebf4ef1237405063685f3039daa25caa4c1a0aa32a53d7693 - 0.11% (910 KB)

[#002] sha256:5ba2bdafda20396c5adb0c084a22df111e4ede38385b6fe77f011e88dac99ff6 - 1.32% (11.1 MB)

[#003] sha256:1c2f3d13f8adbd87b91032e033bd3878c3c6cdb50e1f1061ea118c9ad30aee00 - 0.0% (207 Bytes)

[#004] sha256:4845535d3c2120ecd250d26416eb1ab7c11f16d23f3c30e4bdb0acd5ed835841 - 3.35% (28.2 MB)

[#005] sha256:b49e4902227c992462c4755721e22fd2de812a0f8b03b2b1eabe871f888a62d0 - 30.74% (258 MB)

[#006] sha256:fc3e1efcffac9f9e57369230f13dc7c7662baa44a6e53896d427c0e2a3ec83f8 - 2.2% (18.4 MB)

[#007] sha256:ea1414d7fdecdd16f900010fe8334d388442c0fa465cad4e75eb5ccc6740d4a9 - 0.0% (3.35 KB)

[#008] sha256:3ef279101e758a6f63672d85a5c1682b89880479d717f5299e689f661f127d4b - 0.0% (119 Bytes)

[#009] sha256:2c1ce468d9f3d941396801f6e3afc8921466650dd05430fe644cd3537713d27f - 0.0% (16 Bytes)

[#010] sha256:ef56bab223a7bd4fd3984bc9c0010cdc39fec2c3b71ea6cfa55b0fa8161a8222 - 0.03% (267 KB)

[#011] sha256:eaabd0899072b1cb319728270180805d78356f17ceb8e434f1c7391b494d12d4 - 58.48% (491 MB)

[#012] sha256:e89b7e2d609ddd83c7fa9ec92bcac764ac988449a96530c3c4997e98b7f48634 - 0.79% (6.64 MB)

[#013] sha256:ee6db85356debc72cd8fe77952b99107207ee1bf6674f4153f62a3d5aa565326 - 0.04% (344 KB)

[#014] sha256:30d27635cee7dbb49a3b70fb5c9ace6834593a415c99b9a974875108ed21380b - 0.0% (789 Bytes)

[#015] sha256:682a1dca6827c024fd3bf022969ef673ba4f53bdcacdd9fc1485cd7bc9d0ee8b - 0.0% (434 Bytes)


History
2026-10-05 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'amd64' out/ 'trixie' '@1791158400'

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12.15

2026-10-06 01:55:57 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a

2026-10-06 02:04:40 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev g++ gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit

2026-10-06 02:04:40 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit

2026-10-06 02:04:40 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ENV UV_EXTRA=cpu

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG UV_VERSION=0.8.15

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG PY_VER=3.12

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG BACKEND=cpu

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG USERNAME=fish

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG USER_UID=1000

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG USER_GID=1000

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG UV_VERSION=0.8.15

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG UV_EXTRA=cpu

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ENV BACKEND=cpu DEBIAN_FRONTEND=noninteractive PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1

2026-10-10 07:32:42 UTC (buildkit.dockerfile.v0)

ARG DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends ${DEPENDENCIES} && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

COPY /uv /uvx /bin/ # buildkit

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux; if getent group ${USER_GID} >/dev/null 2>&1; then echo "Group ${USER_GID} already exists"; else groupadd -g ${USER_GID} ${USERNAME}; fi; if id -u ${USER_UID} >/dev/null 2>&1; then echo "User ${USER_UID} already exists, using existing user"; EXISTING_USER=$(id -un ${USER_UID}); mkdir -p /app /home/${EXISTING_USER}/.cache; chown -R ${USER_UID}:${USER_GID} /app /home/${EXISTING_USER}/.cache; else useradd -m -u ${USER_UID} -g ${USER_GID} ${USERNAME}; mkdir -p /app /home/${USERNAME}/.cache; chown -R ${USERNAME}:${USERNAME} /app /home/${USERNAME}/.cache; fi # buildkit

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c mkdir -p /app/references && chown -R ${USER_UID}:${USER_GID} /app/references && chmod 755 /app/references # buildkit

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 pyproject.toml uv.lock README.md ./ # buildkit

2026-10-10 07:33:00 UTC (buildkit.dockerfile.v0)

USER 1000:1000

2026-10-10 07:33:11 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv python pin ${PY_VER} && uv sync --extra ${UV_EXTRA} --frozen --no-install-project # buildkit

2026-10-10 07:44:32 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 . . # buildkit

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv sync --extra ${UV_EXTRA} --frozen # buildkit

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c printf '%s\n' '#!/bin/bash' 'set -euo pipefail' '' '# Set user info from build args' 'USER_UID='${USER_UID} 'USER_GID='${USER_GID} '' '# Logging function' 'log() { echo "[$(date +"%Y-%m-%d %H:%M:%S")] $*" >&2; }' '' '# Validate environment' 'validate_env() {' ' if [ ! -d "/app/checkpoints" ]; then' ' log "WARNING: /app/checkpoints directory not found. Please mount your checkpoints."' ' fi' ' if [ ! -d "/app/references" ]; then' ' log "WARNING: /app/references directory not found. Please mount your references."' ' else' ' # Check if we can write to references directory' ' if [ ! -w "/app/references" ]; then' ' log "ERROR: Cannot write to /app/references directory. Please ensure the mounted directory has proper permissions for user with UID ${USER_UID}."' ' log "You can fix this by running: sudo chown -R ${USER_UID}:${USER_GID} /path/to/your/references"' ' exit 1' ' fi' ' fi' '}' '' '# Build device arguments' 'build_device_args() {' ' if [ "${BACKEND:-}" = "cpu" ]; then' ' echo "--device cpu"' ' fi' '}' '' '# Build compile arguments' 'build_compile_args() {' ' if [ "${1:-}" = "compile" ] || [ "${COMPILE:-}" = "1" ] || [ "${COMPILE:-}" = "true" ]; then' ' echo "--compile"' ' shift' ' fi' ' echo "$@"' '}' '' '# Health check function' 'health_check() {' ' local port=${1:-7860}' ' local endpoint=${2:-/health}' ' curl -f http://localhost:${port}${endpoint} 2>/dev/null || exit 1' '}' > /app/common.sh && chmod +x /app/common.sh # buildkit

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ARG GRADIO_SERVER_NAME=0.0.0.0

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ARG GRADIO_SERVER_PORT=7860

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ARG LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ARG DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ARG DECODER_CONFIG_NAME=modded_dac_vq

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

EXPOSE [7860/tcp]

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV GRADIO_SERVER_NAME=0.0.0.0

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV GRADIO_SERVER_PORT=7860

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENV DECODER_CONFIG_NAME=modded_dac_vq

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

RUN |13 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth DECODER_CONFIG_NAME=modded_dac_vq /bin/sh -c printf '%s\n' '#!/bin/bash' 'source /app/common.sh' '' 'log "Starting Fish Speech WebUI..."' 'validate_env' '' 'DEVICE_ARGS=$(build_device_args)' 'COMPILE_ARGS=$(build_compile_args "$@")' '' 'log "Device args: ${DEVICE_ARGS:-none}"' 'log "Compile args: ${COMPILE_ARGS}"' 'log "Server: ${GRADIO_SERVER_NAME}:${GRADIO_SERVER_PORT}"' '' 'exec uv run tools/run_webui.py \' ' --llama-checkpoint-path "${LLAMA_CHECKPOINT_PATH}" \' ' --decoder-checkpoint-path "${DECODER_CHECKPOINT_PATH}" \' ' --decoder-config-name "${DECODER_CONFIG_NAME}" \' ' ${DEVICE_ARGS} ${COMPILE_ARGS}' > /app/start_webui.sh && chmod +x /app/start_webui.sh # buildkit

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

HEALTHCHECK {Test:[CMD-SHELL curl -f http://localhost:${GRADIO_SERVER_PORT}/health || exit 1] Interval:30s Timeout:10s StartPeriod:1m0s StartInterval:0s Retries:3}

2026-10-10 07:44:33 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/app/start_webui.sh"]

Details
Created

2026-10-10 07:44:51 UTC

Size

746 MB

Content Digest
Environment
BACKEND

cpu

DEBIAN_FRONTEND

noninteractive

DECODER_CHECKPOINT_PATH

checkpoints/s2-pro/codec.pth

DECODER_CONFIG_NAME

modded_dac_vq

GPG_KEY

7169605F62C751356D054A26A821E680E5FA6305

GRADIO_SERVER_NAME

0.0.0.0

GRADIO_SERVER_PORT

7860

LANG

C.UTF-8

LLAMA_CHECKPOINT_PATH

checkpoints/s2-pro

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONDONTWRITEBYTECODE

1

PYTHONUNBUFFERED

1

PYTHON_SHA256

c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a

PYTHON_VERSION

3.12.15

UV_EXTRA

cpu


Layers

[#000] sha256:f6e34b18d5f2c1c6536bd84031bf7e06ba7e3fba48bf20b8173737e6cdf0c766 - 3.27% (24.4 MB)

[#001] sha256:10704142bab3b48558158338d1b0be1a417281db871e0ff1d10554e74c4db2ac - 0.12% (893 KB)

[#002] sha256:52adb33342b01bd4568ee0b85df477caed8cc4ff202784749213eee46281dc7f - 1.47% (10.9 MB)

[#003] sha256:62595de3e3230fd797f721fa7624a2fecec64c70e9aa0f4f52a9f44babb64f43 - 0.0% (207 Bytes)

[#004] sha256:2da170e044b55e2987bd19abe0850d1aa56620f12948e0d67c495dfbe85427ed - 4.27% (31.9 MB)

[#005] sha256:058ce6913f857418c87938b290a5f8b315729348f13f31cb7433f6e521183ae1 - 32.6% (243 MB)

[#006] sha256:47735bcbc7cfae155937089a0231aaa3522026391ae48c43a3bc91909721f8ed - 2.31% (17.2 MB)

[#007] sha256:17ad61a7e6a9272f25a08ea7ee64d28d9d3a8f5724c3cf7756aca289c6a0ea1f - 0.0% (3.35 KB)

[#008] sha256:db95cb95e315a5ca4e0b0068c3d67b983aa9d5f236737298534d4cf6d7e44e7e - 0.0% (117 Bytes)

[#009] sha256:2c1ce468d9f3d941396801f6e3afc8921466650dd05430fe644cd3537713d27f - 0.0% (16 Bytes)

[#010] sha256:8e406f382198d3126e24028e33a8c19b3d3b364c0a9dc313ac8387f9977f5d4b - 0.03% (267 KB)

[#011] sha256:f43bfdd6636f9e157b04780a7f6bebe801b9bd5095ea16657f69ba292544adc8 - 55.02% (411 MB)

[#012] sha256:e89b7e2d609ddd83c7fa9ec92bcac764ac988449a96530c3c4997e98b7f48634 - 0.89% (6.64 MB)

[#013] sha256:e44c1d1333627c1879c52c2bf1a35be510fc48321bbaa5b212ae430eedfa9d75 - 0.02% (176 KB)

[#014] sha256:0a6cbd501856cebe6652378594d54b7bb671b59bf6ac1b0507db4409bc8ef7a6 - 0.0% (789 Bytes)

[#015] sha256:bf358b2d16bf9daf9cf713f601891274d4de77da0bd9680ba208b261edc47bcb - 0.0% (434 Bytes)


History
2026-10-05 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'arm64' out/ 'trixie' '@1791158400'

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12.15

2026-10-06 01:59:29 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a

2026-10-06 02:11:04 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev g++ gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit

2026-10-06 02:11:04 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit

2026-10-06 02:11:04 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ENV UV_EXTRA=cpu

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG UV_VERSION=0.8.15

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG PY_VER=3.12

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG BACKEND=cpu

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG USERNAME=fish

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG USER_UID=1000

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG USER_GID=1000

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG UV_VERSION=0.8.15

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG UV_EXTRA=cpu

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ENV BACKEND=cpu DEBIAN_FRONTEND=noninteractive PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1

2026-10-10 07:33:30 UTC (buildkit.dockerfile.v0)

ARG DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg

2026-10-10 07:35:50 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends ${DEPENDENCIES} && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2026-10-10 07:35:50 UTC (buildkit.dockerfile.v0)

COPY /uv /uvx /bin/ # buildkit

2026-10-10 07:35:51 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux; if getent group ${USER_GID} >/dev/null 2>&1; then echo "Group ${USER_GID} already exists"; else groupadd -g ${USER_GID} ${USERNAME}; fi; if id -u ${USER_UID} >/dev/null 2>&1; then echo "User ${USER_UID} already exists, using existing user"; EXISTING_USER=$(id -un ${USER_UID}); mkdir -p /app /home/${EXISTING_USER}/.cache; chown -R ${USER_UID}:${USER_GID} /app /home/${EXISTING_USER}/.cache; else useradd -m -u ${USER_UID} -g ${USER_GID} ${USERNAME}; mkdir -p /app /home/${USERNAME}/.cache; chown -R ${USERNAME}:${USERNAME} /app /home/${USERNAME}/.cache; fi # buildkit

2026-10-10 07:35:51 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c mkdir -p /app/references && chown -R ${USER_UID}:${USER_GID} /app/references && chmod 755 /app/references # buildkit

2026-10-10 07:35:51 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-10-10 07:35:51 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 pyproject.toml uv.lock README.md ./ # buildkit

2026-10-10 07:35:51 UTC (buildkit.dockerfile.v0)

USER 1000:1000

2026-10-10 07:36:42 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv python pin ${PY_VER} && uv sync --extra ${UV_EXTRA} --frozen --no-install-project # buildkit

2026-10-10 07:44:31 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 . . # buildkit

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv sync --extra ${UV_EXTRA} --frozen # buildkit

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c printf '%s\n' '#!/bin/bash' 'set -euo pipefail' '' '# Set user info from build args' 'USER_UID='${USER_UID} 'USER_GID='${USER_GID} '' '# Logging function' 'log() { echo "[$(date +"%Y-%m-%d %H:%M:%S")] $*" >&2; }' '' '# Validate environment' 'validate_env() {' ' if [ ! -d "/app/checkpoints" ]; then' ' log "WARNING: /app/checkpoints directory not found. Please mount your checkpoints."' ' fi' ' if [ ! -d "/app/references" ]; then' ' log "WARNING: /app/references directory not found. Please mount your references."' ' else' ' # Check if we can write to references directory' ' if [ ! -w "/app/references" ]; then' ' log "ERROR: Cannot write to /app/references directory. Please ensure the mounted directory has proper permissions for user with UID ${USER_UID}."' ' log "You can fix this by running: sudo chown -R ${USER_UID}:${USER_GID} /path/to/your/references"' ' exit 1' ' fi' ' fi' '}' '' '# Build device arguments' 'build_device_args() {' ' if [ "${BACKEND:-}" = "cpu" ]; then' ' echo "--device cpu"' ' fi' '}' '' '# Build compile arguments' 'build_compile_args() {' ' if [ "${1:-}" = "compile" ] || [ "${COMPILE:-}" = "1" ] || [ "${COMPILE:-}" = "true" ]; then' ' echo "--compile"' ' shift' ' fi' ' echo "$@"' '}' '' '# Health check function' 'health_check() {' ' local port=${1:-7860}' ' local endpoint=${2:-/health}' ' curl -f http://localhost:${port}${endpoint} 2>/dev/null || exit 1' '}' > /app/common.sh && chmod +x /app/common.sh # buildkit

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ARG GRADIO_SERVER_NAME=0.0.0.0

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ARG GRADIO_SERVER_PORT=7860

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ARG LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ARG DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ARG DECODER_CONFIG_NAME=modded_dac_vq

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

EXPOSE [7860/tcp]

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV GRADIO_SERVER_NAME=0.0.0.0

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV GRADIO_SERVER_PORT=7860

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENV DECODER_CONFIG_NAME=modded_dac_vq

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

RUN |13 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth DECODER_CONFIG_NAME=modded_dac_vq /bin/sh -c printf '%s\n' '#!/bin/bash' 'source /app/common.sh' '' 'log "Starting Fish Speech WebUI..."' 'validate_env' '' 'DEVICE_ARGS=$(build_device_args)' 'COMPILE_ARGS=$(build_compile_args "$@")' '' 'log "Device args: ${DEVICE_ARGS:-none}"' 'log "Compile args: ${COMPILE_ARGS}"' 'log "Server: ${GRADIO_SERVER_NAME}:${GRADIO_SERVER_PORT}"' '' 'exec uv run tools/run_webui.py \' ' --llama-checkpoint-path "${LLAMA_CHECKPOINT_PATH}" \' ' --decoder-checkpoint-path "${DECODER_CHECKPOINT_PATH}" \' ' --decoder-config-name "${DECODER_CONFIG_NAME}" \' ' ${DEVICE_ARGS} ${COMPILE_ARGS}' > /app/start_webui.sh && chmod +x /app/start_webui.sh # buildkit

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

HEALTHCHECK {Test:[CMD-SHELL curl -f http://localhost:${GRADIO_SERVER_PORT}/health || exit 1] Interval:30s Timeout:10s StartPeriod:1m0s StartInterval:0s Retries:3}

2026-10-10 07:44:51 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/app/start_webui.sh"]

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete