Files

57 lines
1.8 KiB
Docker

FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV VIRTUAL_ENV=/opt/venv
ENV PATH="/opt/venv/bin:${PATH}"
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
python-is-python3 \
ffmpeg \
fonts-noto-cjk \
intel-media-va-driver \
i965-va-driver \
pciutils \
ocl-icd-libopencl1 \
intel-opencl-icd \
libze1 \
clinfo \
&& python3 -m venv "${VIRTUAL_ENV}" \
&& rm -rf /var/lib/apt/lists/*
COPY pyproject.toml README.md ./
ARG INSTALL_ASR=0
ARG YTDLP_VERSION=latest
# Install dependencies in a cache-friendly layer so editing source code doesn't
# force re-downloading everything on every docker build.
RUN INSTALL_ASR="$INSTALL_ASR" python -c "import os, tomllib; from pathlib import Path; data=tomllib.loads(Path('pyproject.toml').read_text('utf-8')); deps=list(data.get('project', {}).get('dependencies', []) or []); opt=data.get('project', {}).get('optional-dependencies', {}) or {}; deps += list(opt.get('asr', []) or []) if os.getenv('INSTALL_ASR','0')=='1' else []; Path('/tmp/requirements.txt').write_text('\\n'.join(deps) + '\\n', encoding='utf-8')" \
&& pip install --no-cache-dir -U pip \
&& pip install --no-cache-dir -r /tmp/requirements.txt
COPY src/videoroll ./src/videoroll
COPY docs ./docs
COPY docker ./docker
RUN pip install --no-cache-dir -e . --no-deps
RUN if [ -n "$YTDLP_VERSION" ]; then \
if [ "$YTDLP_VERSION" = "latest" ]; then \
pip install --no-cache-dir -U "yt-dlp[default]"; \
else \
pip install --no-cache-dir -U "yt-dlp[default]==${YTDLP_VERSION}"; \
fi; \
fi
RUN chmod +x /app/docker/entrypoint.sh
CMD ["/app/docker/entrypoint.sh"]