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 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 RUN apk add --no-cache libc6-compat openssl
WORKDIR /app WORKDIR /app
# Copier les fichiers de dépendances # Copier les fichiers de dépendances
COPY package*.json ./ COPY package*.json ./
COPY tsconfig*.json ./
COPY prisma ./prisma/ COPY prisma ./prisma/
# Installer les dépendances # Installer TOUTES les dépendances (dev incluses pour le build)
RUN npm ci RUN npm ci
# Générer le client Prisma # Générer le client Prisma
RUN npx prisma generate RUN npx prisma generate
# Copier le code source # Copier le code source
COPY . . COPY src ./src
# Build l'application # Build l'application
RUN npm run build RUN npm run build
# Vérifier que dist existe
RUN ls -la dist/
# ============================================================================ # ============================================================================
# Production stage # Production stage
# ============================================================================ # ============================================================================
@ -37,10 +41,10 @@ WORKDIR /app
COPY package*.json ./ COPY package*.json ./
# Installer uniquement les dépendances de production # 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 # Copier le schema Prisma
COPY prisma ./prisma/ COPY --from=builder /app/prisma ./prisma/
# Générer le client Prisma en production # Générer le client Prisma en production
RUN npx prisma generate RUN npx prisma generate
@ -48,21 +52,20 @@ RUN npx prisma generate
# Copier les fichiers buildés depuis le builder # Copier les fichiers buildés depuis le builder
COPY --from=builder /app/dist ./dist 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 && \ 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 USER nestjs
# Exposer le port EXPOSE 3001
EXPOSE 3000
# Variable d'environnement
ENV NODE_ENV=production ENV NODE_ENV=production
# Démarrer l'application # Démarrer l'application
CMD ["node", "dist/main"] CMD ["node", "dist/main.js"]