Checkpoint: Dockerfile final optimisé : les dépendances de développement restent dans le builder et seules les dépendances runtime sont installées dans l’image finale. Cette stratégie remplace le prune et la copie du node_modules complet qui bloquaient l’export sur le serveur de recette.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 2m49s

This commit is contained in:
Manus
2026-08-22 17:47:07 +00:00
parent 75e7a9256c
commit ece737e11d
2 changed files with 11 additions and 9 deletions

View File

@@ -29,9 +29,9 @@ RUN pnpm install --frozen-lockfile
# Copy source code # Copy source code
COPY . . COPY . .
# Build frontend + backend # Build frontend + backend. Les dépendances de développement restent confinées
RUN pnpm build \ # au builder et ne sont jamais copiées dans l'image d'exécution.
&& pnpm prune --prod RUN pnpm build
# ============================================================ # ============================================================
# STAGE 2: Production image # STAGE 2: Production image
@@ -49,15 +49,17 @@ WORKDIR /app
ENV NODE_ENV=production ENV NODE_ENV=production
# Copy node_modules from builder (already compiled, including sharp native binaries) # Installer uniquement les dépendances d'exécution réduit fortement la taille
COPY --from=builder /app/node_modules ./node_modules # 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 built assets from builder (vite outputs to dist/public, esbuild to dist/)
COPY --from=builder /app/dist ./dist COPY --from=builder /app/dist ./dist
# Copy package.json (needed for module resolution)
COPY package.json ./
# Copy drizzle migrations # Copy drizzle migrations
COPY drizzle/ ./drizzle/ COPY drizzle/ ./drizzle/
COPY drizzle.config.ts ./ COPY drizzle.config.ts ./

View File

@@ -734,7 +734,7 @@
## Déploiement ImapFlow — recette et production ## Déploiement ImapFlow — recette et production
- [ ] Pousser la version ImapFlow vers le dépôt Gitea de recette - [ ] Pousser la version ImapFlow vers le dépôt Gitea de recette
- [ ] Réduire limage runtime Docker pour fiabiliser le build sur le serveur de recette - [x] Réduire limage runtime Docker pour fiabiliser le build sur le serveur de recette
- [ ] Déployer et valider HTTP, conteneurs et OAuth2 ImapFlow en 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 - [ ] Pousser la version validée vers le dépôt Gitea de production
- [ ] Déployer et valider HTTP, conteneurs et OAuth2 ImapFlow en production - [ ] Déployer et valider HTTP, conteneurs et OAuth2 ImapFlow en production