FROM python:3.12-slim # ffmpeg for audio extraction/embedding; deno is the JS runtime yt-dlp needs # for YouTube (without it: "No supported JavaScript runtime" -> missing formats # / HTTP 403). yt-dlp auto-detects deno on PATH. RUN apt-get update \ && apt-get install -y --no-install-recommends ffmpeg ca-certificates curl unzip \ && arch="$(uname -m)" \ && case "$arch" in \ x86_64) deno_arch=x86_64-unknown-linux-gnu ;; \ aarch64) deno_arch=aarch64-unknown-linux-gnu ;; \ *) echo "unsupported arch: $arch" >&2; exit 1 ;; \ esac \ && curl -fsSL "https://github.com/denoland/deno/releases/latest/download/deno-${deno_arch}.zip" -o /tmp/deno.zip \ && unzip /tmp/deno.zip -d /usr/local/bin \ && rm /tmp/deno.zip \ && apt-get purge -y --auto-remove curl unzip \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY server/requirements.txt /app/server/requirements.txt RUN pip install --no-cache-dir -r /app/server/requirements.txt COPY musicfetch /app/musicfetch COPY server /app/server EXPOSE 6769 CMD ["sh", "-c", "uvicorn server.app:app --host 0.0.0.0 --port ${MUSICFETCH_PORT:-6769}"]