#!/bin/sh set -e echo "🔎 --- DIAGNÓSTICO DE REDE ---" echo "🌐 Tentando resolver o host do banco..." # Tenta descobrir o IP do host do banco if command -v getent >/dev/null; then echo "Host: $DATABASE_URL" # Extrai o host da URL (tudo entre @ e :) DB_HOST=$(echo $DATABASE_URL | sed -e 's/.*@//' -e 's/:.*//') echo "🔍 Resolvendo IP para: $DB_HOST" getent hosts $DB_HOST || echo "⚠️ Não foi possível resolver o nome do host via DNS interno." else echo "⚠️ 'getent' não disponível para diagnóstico." fi # Função para esperar o banco de dados wait_for_db() { echo "⏳ Aguardando banco de dados..." max_retries=20 count=0 while ! ./node_modules/.bin/prisma db push --dry-run > /dev/null 2>&1; do count=$((count + 1)) if [ $count -gt $max_retries ]; then echo "❌ Erro: O Banco de Dados continua inalcançável após $max_retries tentativas." echo "💡 DICA: Verifique se o Banco e o Site estão na MESMA 'Docker Network' no Dokploy." exit 1 fi echo "🔄 Tentativa $count/$max_retries: Banco ainda offline ou invisível..." sleep 3 done echo "✅ CONEXÃO ESTABELECIDA! Banco de dados encontrado." } if [ -n "$DATABASE_URL" ]; then wait_for_db echo "🔄 Sincronizando tabelas do Prisma..." ./node_modules/.bin/prisma db push --accept-data-loss echo "🌱 Executando seed..." ./node_modules/.bin/prisma db seed || echo "⚠️ Seed falhou (pode ser que os dados já existam)" else echo "⚠️ DATABASE_URL vazia. O deploy vai falhar ou subir sem banco." fi echo "🚀 Subindo aplicação..." exec node server.js