videoDownloadTGbot/youtube-downloader/Dockerfile
vrubelroman 67dba21ff9
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 1m53s
fix(youtube): correct extractor-args separator, soften worker recycling, retry video upload
EXTRACTOR_ARGS used ':' instead of ';' between player_client and skip
fields, so yt-dlp parsed "android:skip=translated_subs" and "hls" as
bogus player_client values and silently fell back to the web client
only, which fails the n-challenge and returns no formats.

--max-requests=1 fully restarted the gunicorn worker after every
single request, opening a race window that could drop the response
connection right after a successful download; raised to 20 with
jitter to keep the periodic-recycle safety net without doing it on
every request.

reply_video() to Telegram had no retry, so a transient httpx
transport error during upload discarded an already-downloaded video;
added the same 3-attempt retry pattern already used for the
downloader services.
2026-06-30 20:24:46 +00:00

9 lines
408 B
Docker

FROM python:3.11-slim
RUN apt-get update && apt-get install -y ffmpeg wget curl aria2 nodejs npm && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN mkdir -p downloads
ENV PYTHONUNBUFFERED=1
CMD sh -c "gunicorn --workers=1 --timeout=600 --preload --max-requests=20 --max-requests-jitter=5 --bind=0.0.0.0:\${PORT:-5000} app:app"