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