Files
notesfrais/backend/Dockerfile
T
2026-04-29 09:57:19 +02:00

37 lines
930 B
Docker

# ── Stage 1 : Build TypeScript ───────────────────────────────
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json ./
RUN npm install --include=dev
COPY tsconfig.json ./
COPY src/ ./src/
# Compile tout (app + scripts) → dist/
RUN npm run build
# ── Stage 2 : Image de production ────────────────────────────
FROM node:20-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
# Dépendances de production uniquement
COPY package.json ./
RUN npm install --omit=dev
# Code compilé (app + scripts)
COPY --from=builder /app/dist ./dist
# Dossiers de stockage (montés via volume en prod)
RUN mkdir -p /app/uploads/images /app/uploads/pdfs
# Script de démarrage
COPY docker-entrypoint.sh ./
RUN chmod +x /app/docker-entrypoint.sh
EXPOSE 3001
ENTRYPOINT ["/app/docker-entrypoint.sh"]