top-tran/backend/Dockerfile

45 lines
766 B
Text
Raw Permalink Normal View History

2026-05-03 21:25:37 -03:00
# Multi-stage build - funciona para dev e prod
ARG NODE_ENV=production
2026-05-03 18:02:08 -03:00
# Build stage
FROM node:lts-alpine3.22 AS builder
2026-04-27 17:26:53 -03:00
2026-05-03 21:25:37 -03:00
ARG NODE_ENV
2026-04-27 17:26:53 -03:00
WORKDIR /app
COPY package*.json ./
2026-05-03 21:25:37 -03:00
# Build sempre precisa dos @types e ferramentas de compilação
RUN npm ci --include=dev
2026-05-03 18:02:08 -03:00
COPY . .
RUN npm run build
# Runtime stage
FROM node:lts-alpine3.22
2026-05-03 21:25:37 -03:00
ARG NODE_ENV
2026-05-03 18:02:08 -03:00
WORKDIR /app
2026-05-03 21:25:37 -03:00
# Copiar arquivos do builder
2026-05-03 18:02:08 -03:00
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/package*.json ./
2026-04-27 17:26:53 -03:00
2026-05-03 21:25:37 -03:00
# Instalar apenas dependências de produção no runtime
RUN if [ "$NODE_ENV" = "production" ]; then \
npm ci --only=production; \
else \
npm ci; \
fi
ARG PORT=4000
ENV NODE_ENV=${NODE_ENV}
ENV PORT=${PORT}
2026-04-27 17:26:53 -03:00
2026-05-03 21:25:37 -03:00
EXPOSE ${PORT}
2026-04-27 17:26:53 -03:00
CMD ["npm", "start"]