Deux problèmes ont été identifiés et corrigés :
1. Le fichier .dockerignore excluait package-lock.json, ce qui empêchait
npm ci de fonctionner (npm ci nécessite package-lock.json)
2. L'image Alpine n'incluait pas les outils de build nécessaires pour
compiler les modules natifs Node.js (bcrypt, sqlite3)
Changements :
- Suppression de package-lock.json du .dockerignore
- Ajout de python3, make et g++ dans les deux stages du Dockerfile
pour permettre la compilation des modules natifs
Configuration de l'application pour le build et déploiement React:
Package.json:
- Ajout de toutes les dépendances React/TypeScript/Vite
- Ajout des dépendances shadcn/ui et Radix UI
- Ajout des scripts de build (dev, build, preview)
- Dépendances ajoutées: react, react-dom, @tanstack/react-query,
react-router-dom, tailwindcss, vite, typescript, lucide-react,
sonner, next-themes, et toutes les primitives @radix-ui
Vite.config.ts:
- Configuration du build pour générer dans le dossier dist/
- Configuration correcte de l'alias @ pour les imports
Server.js:
- Modification pour servir les fichiers statiques depuis dist/
- Maintien du dossier /uploads depuis public/uploads
- SPA fallback pour servir dist/index.html
Dockerfile:
- Multi-stage build pour optimiser la taille
- Stage 1 (builder): Installation des dépendances et build React
- Stage 2 (production): Copie du build + dépendances serveur uniquement
- Réduction significative de la taille de l'image finale
.dockerignore:
- Nouveau fichier pour exclure les fichiers inutiles du contexte Docker
- Exclusion de node_modules, dist, .git, logs, etc.
L'application est maintenant prête pour le déploiement avec Docker.