main
 1FROM ghcr.io/benny-dou/ffmpeg:latest@sha256:6bde7e6c9907e5ffe5d73779c86a7830c29cced5a679d9f2e8fcc0a32a2d57d2 AS ffmpeg
 2FROM shinsenter/s6-overlay:latest@sha256:8236887b01519dc934b49649d98a566c9232b204e8acac0c5cf1454d6478f3a4 AS s6
 3FROM python:3.13-slim@sha256:aa938a849bcb82dce8f49480f056ab82bf5c1c3ebc294f0430f37b6820e7f286 AS python
 4FROM denoland/deno:bin@sha256:324e7887040b297299ec097be8dc570f5eca2c808fe3ad9c52c61f9ab588938c AS deno
 5FROM ghcr.io/astral-sh/uv:0.11.18@sha256:78bc42400d77b0678ba95765305c826652ed5431f399257271dda681d0318f03 AS uv
 6
 7FROM python AS venv
 8RUN --mount=type=bind,source=uv.lock,target=uv.lock \
 9    --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
10    --mount=from=uv,source=/uv,target=/bin/uv \
11    apt-get update && \
12    apt-get install -y --no-install-recommends git build-essential && \
13    uv venv --relocatable --no-python-downloads --no-cache && \
14    uv sync --frozen --no-dev --no-python-downloads --no-cache --no-install-project --no-editable
15COPY --from=ffmpeg /ffmpeg /.venv/bin/ffmpeg
16COPY --from=ffmpeg /ffprobe /.venv/bin/ffprobe
17COPY --from=deno /deno /.venv/bin/deno
18COPY --from=uv /uv /.venv/bin/uv
19
20FROM python
21COPY --link --from=s6 / /
22
23# copy venv
24COPY --from=venv /.venv /venv
25
26RUN apt-get update && \
27    apt-get install -y --no-install-recommends libmagic1 cron aria2 git gh && \
28    groupadd --gid 1000 abc && \
29    useradd -u 1000 -g 1000 --create-home -d /app -s /bin/false abc && \
30    apt-get clean && \
31    rm -rf /var/lib/apt/lists/*
32
33ENV UV_PROJECT_ENVIRONMENT=/venv \
34    PATH=/command:/venv/bin:$PATH
35
36# important: sets s6-overlay entrypoint
37ENTRYPOINT ["/init"]