move dockerfile

This commit is contained in:
Mamadou Khoussa [028918 DSI/DAC/DIF/DS] 2025-12-01 00:51:19 +00:00
parent 161230cf12
commit 9d848817a0

View File

@ -1,28 +1,32 @@
# FILE: Dockerfile (VERSION CORRIGÉE)
# ============================================================================
# Build stage
FROM node:20-alpine AS builder
# Ajouter des dépendances nécessaires pour Prisma
# Ajouter des dépendances nécessaires
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
# Copier les fichiers de dépendances
COPY package*.json ./
COPY tsconfig*.json ./
COPY prisma ./prisma/
# Installer les dépendances
# Installer TOUTES les dépendances (dev incluses pour le build)
RUN npm ci
# Générer le client Prisma
RUN npx prisma generate
# Copier le code source
COPY . .
COPY src ./src
# Build l'application
RUN npm run build
# Vérifier que dist existe
RUN ls -la dist/
# ============================================================================
# Production stage
# ============================================================================
@ -37,10 +41,10 @@ WORKDIR /app
COPY package*.json ./
# Installer uniquement les dépendances de production
RUN npm ci --only=production
RUN npm ci --only=production && npm cache clean --force
# Copier le schema Prisma
COPY prisma ./prisma/
COPY --from=builder /app/prisma ./prisma/
# Générer le client Prisma en production
RUN npx prisma generate
@ -48,21 +52,20 @@ RUN npx prisma generate
# Copier les fichiers buildés depuis le builder
COPY --from=builder /app/dist ./dist
# Créer un utilisateur non-root pour la sécurité
# Vérifier que main.js existe
RUN ls -la dist/ && \
if [ ! -f dist/main.js ]; then echo "ERROR: dist/main.js not found!"; exit 1; fi
# Créer un utilisateur non-root
RUN addgroup -g 1001 -S nodejs && \
adduser -S nestjs -u 1001
adduser -S nestjs -u 1001 && \
chown -R nestjs:nodejs /app
# Changer les permissions
RUN chown -R nestjs:nodejs /app
# Utiliser l'utilisateur non-root
USER nestjs
# Exposer le port
EXPOSE 3000
EXPOSE 3001
# Variable d'environnement
ENV NODE_ENV=production
# Démarrer l'application
CMD ["node", "dist/main"]
CMD ["node", "dist/main.js"]