From c20543886a7150d52771ab8096a7fa19bcfe74f2 Mon Sep 17 00:00:00 2001 From: Labault Date: Sun, 28 Jun 2026 20:07:18 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(docker):=20r=C3=A9essayer=20?= =?UTF-8?q?composer=20install=20face=20aux=20400=20intermittents=20de=20co?= =?UTF-8?q?deload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit codeload.github.com renvoie par vagues des HTTP 400 (réseau, pas un incident GitHub) ; comme le fallback source est désactivé, composer abandonne au premier téléchargement raté et casse tout le build — donc le push-to-deploy. Cinq tentatives espacées de 5 s suffisent à franchir une mauvaise fenêtre. `exit 1` explicite après le dernier essai pour que le build échoue vraiment si le réseau reste KO (sans ça, le `sleep` final masquerait l'échec sous `set -e`). Co-Authored-By: Claude Opus 4.8 (1M context) --- Dockerfile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c6873c1..01f96ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -112,7 +112,16 @@ COPY --link frankenphp/conf.d/20-app.prod.ini $PHP_INI_DIR/app.conf.d/ # Installer les vendors d'abord (cache des couches inchangées) puis le code. COPY --link composer.* symfony.* ./ -RUN composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress +# Retry : codeload.github.com renvoie par vagues des HTTP 400 intermittents +# (réseau, pas un incident GitHub) ; composer abandonne au 1er échec car le +# fallback source est désactivé. Cinq tentatives espacées suffisent à franchir +# une mauvaise fenêtre et fiabilisent le build (donc le push-to-deploy). +RUN for i in 1 2 3 4 5; do \ + composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress && exit 0; \ + echo "composer install : échec, nouvelle tentative ${i}/5…" >&2; \ + sleep 5; \ + done; \ + echo "composer install : échec après 5 tentatives — abandon." >&2; exit 1 COPY --link . ./ # Assets compilés depuis le stage Node (entrypoints.json lu par pentatrion/vite-bundle).