Dockerfile 628 B

1234567891011121314151617181920212223242526272829
  1. FROM node:22-alpine AS deps
  2. WORKDIR /app
  3. COPY package.json package-lock.json ./
  4. RUN npm ci --only=production
  5. FROM node:22-alpine AS builder
  6. WORKDIR /app
  7. COPY package.json package-lock.json ./
  8. RUN npm ci
  9. COPY tsconfig.json nest-cli.json vitest.config.ts ./
  10. COPY src/ src/
  11. COPY test/ test/
  12. RUN npx tsc && npx vitest run --reporter=verbose
  13. FROM node:22-alpine AS runner
  14. WORKDIR /app
  15. ENV NODE_ENV=production
  16. ENV PORT=3000
  17. RUN addgroup -S appgroup && adduser -S appuser -G appgroup
  18. COPY --from=deps /app/node_modules ./node_modules
  19. COPY --from=builder /app/dist ./dist
  20. USER appuser
  21. EXPOSE 3000
  22. CMD ["node", "dist/src/main.js"]