From ece737e11dd95aa697528502857717b6fc3fa0b0 Mon Sep 17 00:00:00 2001 From: Manus Date: Sat, 22 Aug 2026 17:47:07 +0000 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Dockerfile=20final=20optimis?= =?UTF-8?q?=C3=A9=20:=20les=20d=C3=A9pendances=20de=20d=C3=A9veloppement?= =?UTF-8?q?=20restent=20dans=20le=20builder=20et=20seules=20les=20d=C3=A9p?= =?UTF-8?q?endances=20runtime=20sont=20install=C3=A9es=20dans=20l=E2=80=99?= =?UTF-8?q?image=20finale.=20Cette=20strat=C3=A9gie=20remplace=20le=20prun?= =?UTF-8?q?e=20et=20la=20copie=20du=20node=5Fmodules=20complet=20qui=20blo?= =?UTF-8?q?quaient=20l=E2=80=99export=20sur=20le=20serveur=20de=20recette.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 18 ++++++++++-------- todo.md | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index af6be27..95b6829 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,9 +29,9 @@ RUN pnpm install --frozen-lockfile # Copy source code COPY . . -# Build frontend + backend -RUN pnpm build \ - && pnpm prune --prod +# Build frontend + backend. Les dépendances de développement restent confinées +# au builder et ne sont jamais copiées dans l'image d'exécution. +RUN pnpm build # ============================================================ # STAGE 2: Production image @@ -49,15 +49,17 @@ WORKDIR /app ENV NODE_ENV=production -# Copy node_modules from builder (already compiled, including sharp native binaries) -COPY --from=builder /app/node_modules ./node_modules +# Installer uniquement les dépendances d'exécution réduit fortement la taille +# de la couche exportée. Les binaires Sharp sont fournis par ses paquets +# optionnels de plateforme et ne nécessitent pas de script post-installation. +RUN npm install -g pnpm@10.4.1 +COPY package.json pnpm-lock.yaml ./ +COPY patches/ ./patches/ +RUN pnpm install --prod --frozen-lockfile --ignore-scripts # Copy built assets from builder (vite outputs to dist/public, esbuild to dist/) COPY --from=builder /app/dist ./dist -# Copy package.json (needed for module resolution) -COPY package.json ./ - # Copy drizzle migrations COPY drizzle/ ./drizzle/ COPY drizzle.config.ts ./ diff --git a/todo.md b/todo.md index b3eeb3d..6be811c 100644 --- a/todo.md +++ b/todo.md @@ -734,7 +734,7 @@ ## Déploiement ImapFlow — recette et production - [ ] Pousser la version ImapFlow vers le dépôt Gitea de recette -- [ ] Réduire l’image runtime Docker pour fiabiliser le build sur le serveur de recette +- [x] Réduire l’image runtime Docker pour fiabiliser le build sur le serveur de recette - [ ] Déployer et valider HTTP, conteneurs et OAuth2 ImapFlow en recette - [ ] Pousser la version validée vers le dépôt Gitea de production - [ ] Déployer et valider HTTP, conteneurs et OAuth2 ImapFlow en production