27 lines
1.0 KiB
Docker
27 lines
1.0 KiB
Docker
FROM python:3.12-slim
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg ca-certificates tzdata \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# 유튜브는 JS 챌린지 풀이에 외부 JS 런타임(deno)이 필요하다
|
|
COPY --from=denoland/deno:bin /deno /usr/local/bin/deno
|
|
|
|
# 녹화 파일 소유자. 호스트 사용자와 맞춘다 (.env PUID/PGID, 예: Synology 첫 사용자 1026:100)
|
|
ARG PUID=1000
|
|
ARG PGID=1000
|
|
|
|
# yt-dlp는 venv에 두고 컨테이너 사용자 소유로 → 재빌드 없이 rec update / 데몬이 매일 업데이트
|
|
RUN python -m venv /opt/venv \
|
|
&& /opt/venv/bin/pip install --no-cache-dir -U 'yt-dlp[default]' \
|
|
&& chown -R ${PUID}:${PGID} /opt/venv
|
|
|
|
# rec.py(데몬·CLI) + web.py·index.html(웹 화면) — 같은 폴더에 있어야 데몬이 web을 불러온다
|
|
COPY --chmod=755 rec.py /opt/rec/
|
|
COPY web.py index.html /opt/rec/
|
|
RUN ln -s /opt/rec/rec.py /usr/local/bin/rec
|
|
|
|
ENV PATH=/opt/venv/bin:$PATH TZ=Asia/Seoul PYTHONUNBUFFERED=1
|
|
USER ${PUID}:${PGID}
|
|
WORKDIR /data
|
|
CMD ["rec", "daemon"]
|