Files
notesfrais/backend/Dockerfile
T

40 lines
1.0 KiB
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
# Copier les fichiers non-TypeScript (SQL, assets) dans dist/
RUN cp -r src/migrations dist/migrations
# ── 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"]