Ctrl K
ComunidadGuías…

Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
FROM python:3.12-slim

# Le ffmpeg livre par imageio-ffmpeg pour Linux est compile sans libfreetype,
# donc sans le filtre drawtext qui incruste l'heure dans l'image (voir
# find_ffmpeg() dans merge_daily.py, et le meme choix dans .github/ci.yml).
# Celui de la distribution l'a. procps fournit `ps`, absent de l'image
# -slim : runtime.identite_processus()/processus_vivant() l'utilisent pour
# distinguer un pid vivant d'un pid recycle et detecter les zombies
# (AUDIT-2026-08-13, 28.84/28.85) - sans lui l'appli degrade proprement au
# lieu de planter, mais perd cette protection en conteneur.
RUN apt-get update -qq \
    && apt-get install -y -qq --no-install-recommends ffmpeg procps \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# Utilisateur non-root : le code sous /app n'a besoin que d'etre lu une fois
# copie, seul /data (l'etat, cree ci-dessous avant le VOLUME pour que son
# contenu initial ait deja les bons droits) est ecrit a l'execution. >1024,
# le port 8765 ne demande de toute facon aucun privilege pour etre ouvert.
RUN useradd --system --create-home --uid 1000 blink2video \
    && mkdir -p /data \
    && chown -R blink2video:blink2video /app /data

# Comptes, reglages et clips vivent ici, separes du code : une image mise a
# jour ne doit jamais se retrouver masquee par un volume nomme qui garde
# l'ancienne version au meme chemin. runtime.app_dir() sait deja deplacer
# tout le dossier de donnees via BLINK_HOME, rien d'autre a cabler.
ENV BLINK_HOME=/data
VOLUME /data

USER blink2video

# 127.0.0.1 par defaut (voir serve.py) designerait la boucle locale du
# conteneur, injoignable depuis l'hote meme avec le port publie : le reseau
# en pont route vers l'interface du conteneur, pas sa boucle locale. La
# frontiere de securite reste posee par la publication du port elle-meme
# (docker-compose.yml : 127.0.0.1: en dur), pas par cette adresse d'ecoute.
ENV BLINK_BIND=0.0.0.0

EXPOSE 8765
CMD ["python", "blink2video.py", "start"]