Files
TechradarDev/Dockerfile.business
syoul e7c79bf033 fix: passer en mode production pour désactiver Fast Refresh
- Changement de NODE_ENV de development à production dans Dockerfile.business
- Build de l'application en mode production dans le Dockerfile
- Modification de start-business.sh pour utiliser 'next start' au lieu de 'next dev'
- Cela désactive complètement Fast Refresh et évite les rechargements en boucle
- Le mode production n'utilise pas Fast Refresh, donc pas de problème avec webpack hot-update
2025-12-03 15:45:49 +01:00

51 lines
2.6 KiB
Docker

# Utiliser une image Node.js légère
FROM node:20-alpine
WORKDIR /app
# Variables d'environnement à définir AVANT npm install
ENV HUSKY=0
ENV HUSKY_SKIP_INSTALL=1
ENV NODE_PATH=/app/node_modules
ENV NODE_ENV=production
# Installation des dépendances système
RUN apk add --no-cache git
# Copie des fichiers de dépendances
COPY package.json package-lock.json* ./
# Installation des dépendances Node
RUN npm install --legacy-peer-deps --ignore-scripts
# Patch du package aoe_technology_radar pour inclure gray-matter dans les dépendances runtime
RUN node -e "const fs=require('fs');const pkgPath='./node_modules/aoe_technology_radar/package.json';const pkg=JSON.parse(fs.readFileSync(pkgPath,'utf8'));pkg.dependencies=pkg.dependencies||{};pkg.dependencies['gray-matter']='^4.0.3';pkg.dependencies['postcss']='^8.4.47';pkg.scripts=pkg.scripts||{};pkg.scripts.prepare='';fs.writeFileSync(pkgPath,JSON.stringify(pkg,null,2));"
# Copie du reste du projet
COPY . .
RUN chmod +x scripts/start-business.sh
# Préparer .techradar une fois pour toutes (évite les réinstallations au runtime)
RUN npx techradar install && \
node -e "const fs=require('fs');const p='.techradar/package.json';const pkg=JSON.parse(fs.readFileSync(p,'utf8'));pkg.scripts=pkg.scripts||{};pkg.scripts.prepare='';fs.writeFileSync(p,JSON.stringify(pkg,null,2));" && \
cd .techradar && npm install --legacy-peer-deps && npm run build:icons && cd ..
# Patcher next.config.js pour désactiver Fast Refresh (évite les rechargements en boucle)
RUN node -e "const fs=require('fs');const path='.techradar/next.config.js';let content=fs.readFileSync(path,'utf8');const webpackConfig=' webpack: (config, { dev, isServer }) => { if (dev && !isServer) { const idx=config.plugins.findIndex(p=>p.constructor.name===\"ReactRefreshPlugin\"); if(idx>=0)config.plugins.splice(idx,1); } return config; },';if(!content.includes('webpack:')){content=content.replace('reactStrictMode: true,',\"reactStrictMode: true,\\n \"+webpackConfig);fs.writeFileSync(path,content);}"
# --- CONFIGURATION BUSINESS ---
# Application de la logique Business (remplacement de la config et des données)
# Préserver la structure de dossiers par date pour que le framework puisse parser les dates
RUN cp radar-business/config-business.json config.json && \
rm -rf radar/* && \
mkdir -p radar/2025-01-15 && \
cp -r radar-business/2025-01-15/* radar/2025-01-15/
# Builder l'application en mode production pour éviter Fast Refresh
RUN cd .techradar && npm run build
# Exposition du port interne
EXPOSE 3000
# Démarrage du serveur via script (exporte les variables avant npm run serve)
CMD ["./scripts/start-business.sh"]