FROM lexiforest/curl-impersonate:v2.2.2 AS curl_impersonate

FROM python:3.12-slim-bookworm

ENV DEBIAN_FRONTEND=noninteractive \
    PATH=/usr/local/bin:/usr/bin:/bin \
    LD_LIBRARY_PATH=/usr/local/lib \
    KAIZOKU_DOWNLOAD_DIR=/downloads \
    KAIZOKU_HOST=0.0.0.0 \
    KAIZOKU_PORT=8421 \
    KAIZOKU_JOB_STDOUT=true \
    USER_UID= \
    USER_GID=

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        bash \
        ca-certificates \
        curl \
        ffmpeg \
        nodejs \
        npm \
        openssl \
        util-linux \
    && rm -rf /var/lib/apt/lists/*

COPY --from=curl_impersonate /usr/local/bin/ /usr/local/bin/
COPY --from=curl_impersonate /usr/local/lib/ /usr/local/lib/

RUN mkdir -p /app

COPY package.json package-lock.json /app/
RUN cd /app && npm ci --omit=dev

COPY app.py app_support.py config_page.py http_handler.py provider_bridge.py provider_downloader.py provider_updates.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 providers /app/providers

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

RUN chmod 0755 /usr/local/bin/docker-entrypoint.sh \
    && mkdir -p /downloads /jellyfin/tv /jellyfin/movies /app/.kaizoku

WORKDIR /app

EXPOSE 8421

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
