Files
octto-engenharia/frontend/Dockerfile

58 lines
1.2 KiB
Docker

# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
# Copiar arquivos de dependências
COPY package*.json ./
COPY prisma ./prisma/
# Instalar dependências
RUN npm ci
# Copiar código fonte
COPY . .
# Gerar Prisma Client
RUN npx prisma generate
# Build da aplicação
RUN npm run build
# Production stage
FROM node:20-alpine AS runner
WORKDIR /app
# Criar usuário não-root
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
# Copiar arquivos necessários do builder
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
# Copiar script de entrypoint
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
RUN chmod +x /app/docker-entrypoint.sh
# Configurar permissões
RUN chown -R nextjs:nodejs /app
# Mudar para usuário não-root
USER nextjs
# Expor porta
EXPOSE 3000
# Definir variável de ambiente
ENV PORT=3000
ENV NODE_ENV=production
# Comando de inicialização
CMD ["/app/docker-entrypoint.sh"]