From 52833317e6a5c3616b664ae1de33cbfefa4ff0d7 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 12 Oct 2026 17:37:32 +0000 Subject: [PATCH] Compose : service remotion-renderer pour le rendu des Reels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le rendu Remotion tourne dans son propre conteneur Node ; l'application Rust le joint par REMOTION_RENDERER_URL. Ancien script de pré-bundle retiré (le service pré-bundle lui-même à la construction). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013qMexTfVRaegbPAgsagCAJ --- .dockerignore | 1 + docker-compose.yml | 25 +++++++++++++++++++++++-- scripts/prebundle-remotion.mjs | 25 ------------------------- 3 files changed, 24 insertions(+), 27 deletions(-) delete mode 100644 scripts/prebundle-remotion.mjs diff --git a/.dockerignore b/.dockerignore index 14de69c..3791c3a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,6 @@ # Dépendances node_modules +**/node_modules npm-debug.log # Fichiers de build diff --git a/docker-compose.yml b/docker-compose.yml index e1003ab..63be013 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,8 +55,8 @@ services: # Rendu des Reels vidéo : remotion (sous-titres animés, identique à # l'aperçu) ou ffmpeg (plus rapide, sous-titres classiques) REEL_RENDERER: ${REEL_RENDERER:-remotion} - # Onglets Chromium en parallèle pour Remotion (défaut : moitié des cœurs) - RENDER_CONCURRENCY: ${RENDER_CONCURRENCY:-} + # Service de rendu Remotion (conteneur Node dédié, même clé que FFmpeg) + REMOTION_RENDERER_URL: http://remotion-renderer:8100 networks: - internal - nginx_default @@ -70,6 +70,27 @@ services: - logos_uploads:/app/uploads/logos - stories_uploads:/app/uploads/stories + # Rendu Remotion des Reels (sous-titres animés, logo, effet de fin) + remotion-renderer: + build: + context: . + dockerfile: remotion-service/Dockerfile + image: socialflow-remotion-renderer:latest + pull_policy: build + container_name: socialflow-remotion + restart: unless-stopped + environment: + API_KEY: ${FFMPEG_API_KEY:-socialflow-secret-ffmpeg-key} + PORT: 8100 + # Onglets Chromium par rendu (défaut : moitié des cœurs) + RENDER_CONCURRENCY: ${RENDER_CONCURRENCY:-} + MAX_PARALLEL_RENDERS: 1 + shm_size: 1gb + networks: + - internal + expose: + - "8100" + # Service FFmpeg dédié ffmpeg-api: build: diff --git a/scripts/prebundle-remotion.mjs b/scripts/prebundle-remotion.mjs deleted file mode 100644 index cd10ecb..0000000 --- a/scripts/prebundle-remotion.mjs +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env node -// Pré-bundle des compositions Remotion pendant le build Docker : le cache -// Webpack est chaud, le premier rendu d'un utilisateur démarre plus vite. -// Même configuration que server/services/reels/remotionRenderer.ts. -import path from "node:path"; -import { fileURLToPath } from "node:url"; -import { bundle } from "@remotion/bundler"; - -const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); - -bundle({ - entryPoint: path.join(root, "client/src/remotion/index.ts"), - webpackOverride: (config) => ({ - ...config, - resolve: { - ...config.resolve, - alias: { ...(config.resolve?.alias ?? {}), "@shared": path.join(root, "shared") }, - }, - }), -}) - .then((location) => console.log("✅ Remotion pre-bundle OK:", location)) - .catch((error) => { - console.warn("⚠️ Remotion pre-bundle skipped:", error.message); - process.exit(0); - });