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 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 ./
|
||||||
|
|||||||
2
todo.md
2
todo.md
@@ -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 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
|
- [ ] 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
|
||||||
|
|||||||
Reference in New Issue
Block a user