diff --git a/Dockerfile b/Dockerfile index 09de7f2..24adb88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,9 +12,10 @@ ENV NPM_CONFIG_HTTP_PROXY=$HTTP_PROXY ENV NPM_CONFIG_HTTPS_PROXY=$HTTPS_PROXY ENV NPM_CONFIG_TIMEOUT=600000 -# Copia dependências e instala apenas as necessárias para build +# Copia dependências e instala apenas as necessárias COPY package.json package-lock.json ./ -RUN npm ci --omit=dev --legacy-peer-deps +RUN npm ci --omit=dev --legacy-peer-deps \ + && npm install typescript --no-save # Copia o restante do código COPY . . @@ -28,31 +29,30 @@ RUN npm run build -- --no-lint FROM node:20-alpine AS runner WORKDIR /app -# Instala utilitários básicos para inspeção e debug +# Instala utilitários úteis e timezone RUN apk add --no-cache nano curl tzdata -# Configura timezone (América/São Paulo) +# Define timezone padrão ENV TZ=America/Sao_Paulo -# Cria usuário não-root +# Cria usuário não-root para segurança RUN addgroup -g 1001 nodejs && adduser -u 1001 -G nodejs -s /bin/sh -D nodejs -# Copia apenas o necessário do build +# Copia apenas o necessário para execução COPY --from=builder --chown=nodejs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nodejs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nodejs:nodejs /app/public ./public +# Define variáveis de ambiente USER nodejs - -# Configura variáveis de ambiente ENV NODE_ENV=production ENV PORT=3000 ENV HOSTNAME=0.0.0.0 +# Expõe porta e healthcheck automático EXPOSE 3000 - -# Healthcheck automático (5s de intervalo, falha após 3 tentativas) -HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl -f http://localhost:3000/ || exit 1 +HEALTHCHECK --interval=10s --timeout=3s --retries=3 \ + CMD curl -f http://localhost:3000/ || exit 1 # Inicia o servidor standalone CMD ["node", "server.js"]