48 lines
1.6 KiB
Bash
48 lines
1.6 KiB
Bash
#!/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
|