dcb-service-report/Dockerfile
Mamadou Khoussa [028918 DSI/DAC/DIF/DS] 161230cf12 move dockerfile
2025-12-01 00:49:58 +00:00

68 lines
1.4 KiB
Docker

# ============================================================================
# Build stage
FROM node:20-alpine AS builder
# Ajouter des dépendances nécessaires pour Prisma
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
# Copier les fichiers de dépendances
COPY package*.json ./
COPY prisma ./prisma/
# Installer les dépendances
RUN npm ci
# Générer le client Prisma
RUN npx prisma generate
# Copier le code source
COPY . .
# Build l'application
RUN npm run build
# ============================================================================
# Production stage
# ============================================================================
FROM node:20-alpine AS production
# Ajouter OpenSSL pour Prisma
RUN apk add --no-cache openssl
WORKDIR /app
# Copier package.json
COPY package*.json ./
# Installer uniquement les dépendances de production
RUN npm ci --only=production
# Copier le schema Prisma
COPY prisma ./prisma/
# Générer le client Prisma en production
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é
RUN addgroup -g 1001 -S nodejs && \
adduser -S nestjs -u 1001
# Changer les permissions
RUN chown -R nestjs:nodejs /app
# Utiliser l'utilisateur non-root
USER nestjs
# Exposer le port
EXPOSE 3000
# Variable d'environnement
ENV NODE_ENV=production
# Démarrer l'application
CMD ["node", "dist/main"]