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