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
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 2m49s
This commit is contained in:
18
Dockerfile
18
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 ./
|
||||
|
||||
2
todo.md
2
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
|
||||
|
||||
Reference in New Issue
Block a user