diff --git a/Dockerfile b/Dockerfile index 1aa4120..1bd0217 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,8 +73,11 @@ RUN rm -rf client/node_modules \ # Pré-bundler la composition Remotion pendant le build (speedup au premier rendu) RUN node scripts/prebundle-remotion.js || true -# S'assurer que le binaire browser de Remotion est téléchargé et disponible -RUN npx remotion browser ensure +# Vérifier que le binaire Chromium système est bien présent (utilisé à la place du binaire Remotion) +# Note: npx remotion browser ensure télécharge un binaire glibc qui ne fonctionne pas sur Alpine (musl) +RUN which chromium-browser && echo "✓ chromium-browser trouvé à $(which chromium-browser)" || \ + (which chromium && echo "✓ chromium trouvé à $(which chromium)") || \ + echo "⚠ Aucun chromium système trouvé — le rendu échouera" # Exposer le port de l'application diff --git a/server/routes/remotion.ts b/server/routes/remotion.ts index 87dfd1f..e91c02d 100644 --- a/server/routes/remotion.ts +++ b/server/routes/remotion.ts @@ -171,9 +171,10 @@ remotionRouter.post("/render", upload.array("images", 4), async (req, res) => { console.log("🎬 Rendering media...", effectiveDurationInFrames, "frames"); - // Standard Chromium paths — Alpine installs at /usr/bin/chromium, Debian/Ubuntu at /usr/bin/chromium-browser - const chromiumPaths = ["/usr/bin/chromium", "/usr/bin/chromium-browser"]; + // Standard Chromium paths — Alpine installs at /usr/bin/chromium-browser, Debian/Ubuntu may differ + const chromiumPaths = ["/usr/bin/chromium-browser", "/usr/bin/chromium"]; const browserExecutable = chromiumPaths.find(p => fs.existsSync(p)); + console.log("🌐 Browser executable:", browserExecutable ?? "remotion bundled (fallback)"); await renderMedia({ composition: { ...composition, durationInFrames: effectiveDurationInFrames }, @@ -184,7 +185,8 @@ remotionRouter.post("/render", upload.array("images", 4), async (req, res) => { browserExecutable, chromiumOptions: { disableWebSecurity: true, - } + ignoreCertificateErrors: true, + }, }); console.log("✅ Render completed:", outputFilename);