FROM python:3.12-slim-bookworm ARG ANI_CLI=https://github.com/pystardust/ani-cli.git ARG ANI_CLI_BRANCH=master ARG YT_DLP_RELEASE_URL=https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp ENV DEBIAN_FRONTEND=noninteractive \ ANI_CLI_REPO=${ANI_CLI} \ ANI_CLI_BRANCH=${ANI_CLI_BRANCH} \ PATH=/usr/local/bin:/usr/bin:/bin \ ANI_CLI_BIN=ani-cli \ ANIPY_CLI_BIN=/usr/local/bin/anipy-cli \ ANIMDL_BIN=/usr/local/bin/animdl \ ANI_CLI_DOWNLOAD_DIR=/downloads \ ANI_CLI_WEB_HOST=0.0.0.0 \ ANI_CLI_WEB_PORT=8421 \ UPDATE_ON_START=false \ USER_UID= \ USER_GID= RUN apt-get update \ && apt-get install -y --no-install-recommends \ aria2 \ botan \ ca-certificates \ curl \ ffmpeg \ fzf \ build-essential \ git \ grep \ libxml2-dev \ libxslt1-dev \ openssl \ patch \ python3.11 \ python3.11-venv \ sed \ sudo \ util-linux \ && rm -rf /var/lib/apt/lists/* RUN git clone --depth 1 --branch "${ANI_CLI_BRANCH}" "${ANI_CLI}" /tmp/ani-cli-src \ && install -m 0755 /tmp/ani-cli-src/ani-cli /usr/local/bin/ani-cli \ && ani_cli_raw_repo="$(printf '%s' "${ANI_CLI}" | sed -E 's#^https://github.com/##; s#\\.git$##')" \ && case "${ANI_CLI}" in \ https://github.com/*) \ sed -i "s|https://raw.githubusercontent.com/pystardust/ani-cli/master/ani-cli|https://raw.githubusercontent.com/${ani_cli_raw_repo}/${ANI_CLI_BRANCH}/ani-cli|" /usr/local/bin/ani-cli ;; \ esac \ && rm -rf /tmp/ani-cli-src RUN curl -fL "${YT_DLP_RELEASE_URL}" -o /usr/local/bin/yt-dlp \ && chmod 0755 /usr/local/bin/yt-dlp \ && yt-dlp --version RUN python3 -m venv /opt/anipy-cli \ && /opt/anipy-cli/bin/pip install --no-cache-dir --upgrade pip \ && /opt/anipy-cli/bin/pip install --no-cache-dir anipy-cli \ && python3.11 -m venv /opt/animdl \ && /opt/animdl/bin/pip install --no-cache-dir --upgrade pip \ && /opt/animdl/bin/pip install --no-cache-dir animdl==1.7.27 \ && test -x /opt/anipy-cli/bin/anipy-cli \ && test -x /opt/animdl/bin/animdl \ && printf '%s\n' '#!/bin/sh' 'exec /opt/anipy-cli/bin/anipy-cli "$@"' > /usr/local/bin/anipy-cli \ && printf '%s\n' '#!/bin/sh' 'exec /opt/animdl/bin/animdl "$@"' > /usr/local/bin/animdl \ && chmod 0755 /usr/local/bin/anipy-cli /usr/local/bin/animdl \ && ln -sf /usr/local/bin/anipy-cli /usr/bin/anipy-cli \ && ln -sf /usr/local/bin/animdl /usr/bin/animdl \ && /usr/local/bin/anipy-cli --version \ && /usr/local/bin/animdl --version RUN mkdir -p /app COPY app.py app_support.py config_page.py http_handler.py queue_jobs.py queue_page.py search_page.py template_helpers.py title_matching.py watchlist_identity.py watchlist_page.py web_templates.py VERSION CHANGELOG.md favicon.png /app/ COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod 0755 /usr/local/bin/docker-entrypoint.sh \ && mkdir -p /downloads /app/.ani-cli-web WORKDIR /app EXPOSE 8421 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]