Correção do docker

Correção do docker

🐛 Descrição do Bug A funcionalidade de exportação de relatórios em PDF falha quando a aplicação é executada dentro do container Docker. O backend retorna um erro 500 (Internal Server Error) porque a biblioteca puppeteer (usada pelo html-pdf-node) não consegue iniciar o processo do navegador Chromium, pois as dependências de sistema necessárias não estão instaladas na imagem node:22-alpine.

🔄 Passos para Reproduzir Inicie o projeto usando Docker (docker-compose up –build).

Acesse a aplicação Frontend em http://localhost:3001/mapa.

Selecione qualquer região (ex: Nordeste) ou estado no mapa para carregar os dados.

Clique no botão “BAIXAR RELATÓRIO REGIONAL (PDF)” (ou estadual/municipal).

Observe que o download não inicia e o console do navegador exibe erro 500.

✅ Comportamento Esperado Ao clicar no botão de download, o Backend deveria gerar o arquivo PDF dinamicamente usando os dados do Supabase e enviar o arquivo (application/pdf) para o navegador, iniciando o download automaticamente.

💥 Comportamento Atual Frontend: O console do navegador exibe GET http://localhost:3000/api/report/… 500 (Internal Server Error).

Backend (Terminal): O log exibe a exceção:

Plaintext

Error: Failed to launch the browser process! spawn /app/node_modules/puppeteer/.local-chromium/…/chrome ENOENT Isso indica que o binário do navegador não foi encontrado ou não pode ser executado.

📸 Capturas de Tela / Vídeos Log de Erro no Terminal (Backend):

Plaintext

meu-backend | Erro Região PDF: Error: Failed to launch the browser process! spawn /app/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome ENOENT meu-backend | meu-backend | TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md Console do Navegador:

Plaintext

Failed to load resource: the server responded with a status of 500 (Internal Server Error) 💻 Ambiente de Execução Sistema Operacional Hospedeiro: Windows 11 com WSL 2 (Ubuntu 24.04).

Ambiente de Container: Docker Desktop.

Imagem Base do Backend: node:22-alpine (Linux Alpine).

Bibliotecas Envolvidas: html-pdf-node, puppeteer.

Navegador (Cliente): Microsoft Edge / Google Chrome.

📝 Contexto Adicional Causa Raiz Identificada: A imagem alpine do Docker é minimalista e não vem com as bibliotecas gráficas (como libnss, libfreetype, etc.) nem com o Chromium instalado, que são pré-requisitos para o Puppeteer funcionar.

Solução Proposta: É necessário modificar o Dockerfile do backend para instalar manualmente o pacote chromium e suas dependências, além de configurar as variáveis de ambiente PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true e PUPPETEER_EXECUTABLE_PATH