feat: implement vertical crop, local LLM deepseek-v4-flash, multi-threading, word-level pink box highlight subtitles, and Nextcloud scan sync
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Use an official Python runtime as a base image
|
||||
FROM python:3.12.2
|
||||
|
||||
# Set the working directory in the container
|
||||
WORKDIR /app
|
||||
|
||||
# System deps: git for pip-from-git, ffmpeg (with libass for subtitle burn-in), fonts, debugging tools.
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git bash nano wget ca-certificates \
|
||||
ffmpeg fonts-dejavu-core \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Verify libass is built into ffmpeg (subtitle burn-in needs it).
|
||||
RUN ffmpeg -hide_banner -filters 2>/dev/null | grep -q "ass " || (echo "ffmpeg lacks ass filter" && exit 1)
|
||||
|
||||
# Upgrade pip and pin setuptools < 71 (newer versions break legacy setup.py
|
||||
# packages like openai-whisper that import pkg_resources at module top-level).
|
||||
RUN pip install --upgrade pip "setuptools<71" wheel
|
||||
|
||||
# Copy requirements first so Docker can cache the installed packages layer
|
||||
COPY requirements.txt /app/
|
||||
|
||||
# Install Python deps. --no-build-isolation lets setup.py-based packages reuse
|
||||
# the setuptools we just pinned, instead of pip pulling latest into an isolated env.
|
||||
RUN pip install --no-cache-dir --no-build-isolation -r requirements.txt
|
||||
|
||||
# Copy the rest of the application code
|
||||
COPY . /app
|
||||
|
||||
# Geckodriver for the (optional) selenium uploaders.
|
||||
RUN wget -q https://github.com/mozilla/geckodriver/releases/download/v0.32.0/geckodriver-v0.32.0-linux64.tar.gz \
|
||||
&& tar -xzf geckodriver-v0.32.0-linux64.tar.gz \
|
||||
&& mv geckodriver /usr/local/bin/ \
|
||||
&& rm geckodriver-v0.32.0-linux64.tar.gz \
|
||||
&& geckodriver --version
|
||||
|
||||
# Firefox for selenium uploaders (optional). firefox-esr ships in Debian stable
|
||||
# so we don't need to add the `unstable` repo (which causes openssl conflicts).
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends firefox-esr \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Gradio default port
|
||||
EXPOSE 7860
|
||||
|
||||
# Default: launch the Gradio UI. Override with `docker run ... bash` for the CLI.
|
||||
CMD ["python", "app.py"]
|
||||
Reference in New Issue
Block a user