mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-17 12:20:01 +02:00
Portage de services/ffmpeg.ts, services/reels/*, ttsSync.ts et routes/reels.ts : même file persistante reel_jobs (FOR UPDATE SKIP LOCKED, tentatives, battement de cœur, synchronisation des colonnes generation_* des posts), mêmes validations (messages zod reproduits, paramètres stockés en JSON camelCase compatibles avec les jobs de l'ancien serveur), mêmes réponses JSON. Le rendu Remotion passe par un nouveau service Node (remotion-service/) : POST /renders, suivi de la progression, téléchargement du MP4 en flux, mêmes réglages d'encodage. Sans REMOTION_RENDERER_URL, repli sur le rendu FFmpeg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013qMexTfVRaegbPAgsagCAJ
67 lines
1.9 KiB
Docker
67 lines
1.9 KiB
Docker
# Service de rendu Remotion des Reels (sous-titres animés, logo, effet de fin).
|
|
# Contexte de build : la racine du dépôt (les compositions vivent dans
|
|
# client/src/remotion et importent shared/captions.ts).
|
|
# docker build -f remotion-service/Dockerfile .
|
|
|
|
# Debian slim — glibc requis par le Chrome headless shell de Remotion
|
|
FROM node:20-slim
|
|
|
|
# Dépendances du Chrome headless shell et polices de secours
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
fonts-dejavu-core \
|
|
fontconfig \
|
|
libasound2 \
|
|
libatk-bridge2.0-0 \
|
|
libatk1.0-0 \
|
|
libcups2 \
|
|
libdbus-1-3 \
|
|
libdrm2 \
|
|
libgbm1 \
|
|
libglib2.0-0 \
|
|
libgtk-3-0 \
|
|
libnspr4 \
|
|
libnss3 \
|
|
libpango-1.0-0 \
|
|
libx11-6 \
|
|
libx11-xcb1 \
|
|
libxcb1 \
|
|
libxcomposite1 \
|
|
libxdamage1 \
|
|
libxext6 \
|
|
libxfixes3 \
|
|
libxkbcommon0 \
|
|
libxrandr2 \
|
|
libxshmfence1 \
|
|
libxtst6 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Dépendances (versions épinglées, identiques au package.json racine)
|
|
COPY remotion-service/package.json remotion-service/package-lock.json ./
|
|
RUN npm ci --omit=dev --no-audit --no-fund
|
|
|
|
# Compositions et module partagé qu'elles importent (@shared/captions).
|
|
# La police Montserrat vient du paquet @fontsource/montserrat.
|
|
COPY client/src/remotion ./client/src/remotion
|
|
COPY shared/captions.ts ./shared/captions.ts
|
|
COPY remotion-service/server.mjs ./server.mjs
|
|
|
|
# Pré-bundle des compositions et téléchargement du Chrome headless shell
|
|
# (équivalent de `npx remotion browser ensure`) : aucun accès réseau au
|
|
# premier rendu.
|
|
RUN node server.mjs --prepare && rm -rf /tmp/remotion-*
|
|
|
|
ENV NODE_ENV=production \
|
|
PORT=8100 \
|
|
OUTPUT_DIR=/tmp/remotion-renders
|
|
|
|
# Utilisateur non privilégié ; seuls /tmp et le cache Chrome sont utilisés
|
|
RUN chown -R node:node /app
|
|
USER node
|
|
|
|
EXPOSE 8100
|
|
|
|
CMD ["node", "server.mjs"]
|