mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2025-10-23 15:11:08 +00:00
78 lines
2.9 KiB
Docker
78 lines
2.9 KiB
Docker
FROM python:3.12-slim
|
|
|
|
# Set environment variables to reduce image size
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
UV_CACHE_DIR=/tmp/uv-cache
|
|
|
|
# Add container metadata
|
|
LABEL org.opencontainers.image.description="Docker image for Unshackle with all required dependencies for downloading media content"
|
|
|
|
# Install base dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
wget \
|
|
gnupg \
|
|
git \
|
|
curl \
|
|
build-essential \
|
|
cmake \
|
|
pkg-config \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set up repos for mkvtools and bullseye for ccextractor
|
|
RUN wget -O /etc/apt/keyrings/gpg-pub-moritzbunkus.gpg https://mkvtoolnix.download/gpg-pub-moritzbunkus.gpg \
|
|
&& echo "deb [signed-by=/etc/apt/keyrings/gpg-pub-moritzbunkus.gpg] https://mkvtoolnix.download/debian/ bookworm main" >> /etc/apt/sources.list \
|
|
&& echo "deb-src [signed-by=/etc/apt/keyrings/gpg-pub-moritzbunkus.gpg] https://mkvtoolnix.download/debian/ bookworm main" >> /etc/apt/sources.list \
|
|
&& echo "deb http://ftp.debian.org/debian bullseye main" >> /etc/apt/sources.list
|
|
|
|
# Install all dependencies from apt
|
|
RUN apt-get update && apt-get install -y \
|
|
ffmpeg \
|
|
ccextractor \
|
|
mkvtoolnix \
|
|
aria2 \
|
|
libmediainfo-dev \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install shaka packager
|
|
RUN wget https://github.com/shaka-project/shaka-packager/releases/download/v2.6.1/packager-linux-x64 \
|
|
&& chmod +x packager-linux-x64 \
|
|
&& mv packager-linux-x64 /usr/local/bin/packager
|
|
|
|
# Install N_m3u8DL-RE
|
|
RUN wget https://github.com/nilaoda/N_m3u8DL-RE/releases/download/v0.3.0-beta/N_m3u8DL-RE_v0.3.0-beta_linux-x64_20241203.tar.gz \
|
|
&& tar -xzf N_m3u8DL-RE_v0.3.0-beta_linux-x64_20241203.tar.gz \
|
|
&& mv N_m3u8DL-RE /usr/local/bin/ \
|
|
&& chmod +x /usr/local/bin/N_m3u8DL-RE \
|
|
&& rm N_m3u8DL-RE_v0.3.0-beta_linux-x64_20241203.tar.gz
|
|
|
|
# Create binaries directory and add symlinks for all required executables
|
|
RUN mkdir -p /app/binaries && \
|
|
ln -sf /usr/bin/ffprobe /app/binaries/ffprobe && \
|
|
ln -sf /usr/bin/ffmpeg /app/binaries/ffmpeg && \
|
|
ln -sf /usr/bin/mkvmerge /app/binaries/mkvmerge && \
|
|
ln -sf /usr/local/bin/N_m3u8DL-RE /app/binaries/N_m3u8DL-RE && \
|
|
ln -sf /usr/local/bin/packager /app/binaries/packager && \
|
|
ln -sf /usr/local/bin/packager /usr/local/bin/shaka-packager && \
|
|
ln -sf /usr/local/bin/packager /usr/local/bin/packager-linux-x64
|
|
|
|
# Install uv
|
|
RUN pip install --no-cache-dir uv
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy dependency files and README (required by pyproject.toml)
|
|
COPY pyproject.toml uv.lock README.md ./
|
|
|
|
# Copy source code first
|
|
COPY unshackle/ ./unshackle/
|
|
|
|
# Install dependencies with uv (including the project itself)
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
# Set entrypoint to allow passing commands directly to unshackle
|
|
ENTRYPOINT ["uv", "run", "unshackle"]
|
|
CMD ["-h"] |