YouTube imports were stuck in `ingesting` forever: after the capability-
routing split (fdec2e3), every worker's WORKER_QUEUES enumerated an explicit
list that omitted `import`, so index.js's `want('import')` was false on every
worker and nothing consumed the import queue. Add `import` to worker-p4
(heavy/primary worker; import is concurrency-1 and network-bound, one consumer
is enough).
Second defect that would have surfaced once routed: the baked yt-dlp came from
the distro package (Ubuntu 22.04 apt = 2022.04.08, ~4 years stale), which
current YouTube rejects. Pull the latest self-contained yt-dlp release binary
at image build instead (GPU image: yt-dlp_linux; alpine image: python zipapp).
Rebuild the worker image to refresh.
Verified on zampp1: import jobs drain ingesting -> processing -> ready,
failed=0, yt-dlp 2026.03.17.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
14 lines
624 B
Docker
14 lines
624 B
Docker
FROM node:20-alpine
|
|
# yt-dlp powers the YouTube importer; python3 is its runtime dep.
|
|
# Not from apk: the packaged yt-dlp goes stale and YouTube breaks old versions.
|
|
# Pull the latest python-zipapp release (runs on musl via system python3) so a
|
|
# rebuild always refreshes it. /usr/local/bin precedes /usr/bin on PATH.
|
|
RUN apk add --no-cache ffmpeg python3 curl \
|
|
&& curl -fsSL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp \
|
|
-o /usr/local/bin/yt-dlp \
|
|
&& chmod a+rx /usr/local/bin/yt-dlp
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm install --omit=dev
|
|
COPY . .
|
|
CMD ["node", "src/index.js"]
|