#!/bin/bash # ============================================================================ # Docker Entrypoint - para.AI API v3.0 # Inicializa PostgreSQL local + API FastAPI # ============================================================================ set -e echo "" echo "╔══════════════════════════════════════════════════════════════╗" echo "║ para.AI API v3.0 ║" echo "║ Análise Jurisprudencial com IA ║" echo "╚══════════════════════════════════════════════════════════════╝" echo "" # ============================================================================ # FASE 1: VERIFICAR AMBIENTE # ============================================================================ echo "🔍 Verificando ambiente..." # Mostrar informações do sistema echo " Python: $(python --version)" echo " PostgreSQL: $(su - postgres -c 'psql --version' | head -1)" echo " Diretório: $(pwd)" echo "" # ============================================================================ # FASE 2: INICIALIZAR POSTGRESQL # ============================================================================ echo "🐘 Inicializando PostgreSQL local..." /init-postgres.sh # Verificar se PostgreSQL está rodando if ! pg_isready -h localhost -p 5432 &> /dev/null; then echo "❌ PostgreSQL não está rodando!" exit 1 fi echo "✅ PostgreSQL OK" echo "" # ============================================================================ # FASE 3: CONFIGURAR VARIÁVEIS DE AMBIENTE # ============================================================================ echo "⚙️ Configurando variáveis de ambiente..." # Se DATABASE_URL não foi fornecida, usar a local if [ -z "$DATABASE_URL" ] || [ "$DATABASE_URL" = "postgresql://para_ai:para_ai_temp@localhost:5432/para_ai" ]; then export DATABASE_URL="postgresql://${POSTGRES_USER:-para_ai}:${POSTGRES_PASSWORD:-para_ai_temp}@localhost:5432/${POSTGRES_DB:-para_ai}" echo " DATABASE_URL configurada para PostgreSQL local" fi # Configurações padrão para HF Spaces export APP_ENV="${APP_ENV:-production}" export DEBUG="${DEBUG:-false}" export HOST="${HOST:-0.0.0.0}" export PORT="${PORT:-7860}" echo " APP_ENV: $APP_ENV" echo " PORT: $PORT" echo " DATABASE: PostgreSQL local" echo "" # ============================================================================ # FASE 4: TESTAR CONEXÃO COM BANCO # ============================================================================ echo "🔗 Testando conexão com banco de dados..." python3 << 'PYTHON_TEST' import sys from api.config import get_settings try: settings = get_settings() print(f" ✅ Configurações carregadas") print(f" ✅ Environment: {settings.APP_ENV}") print(f" ✅ Database URL configurada") except Exception as e: print(f" ❌ Erro ao carregar configurações: {e}") sys.exit(1) # Testar conexão com DB try: from database.db_manager import get_db_manager db = get_db_manager() if db.health_check(): print(f" ✅ Conexão com PostgreSQL OK") else: print(f" ❌ Falha no health check do DB") sys.exit(1) except Exception as e: print(f" ❌ Erro ao conectar com DB: {e}") sys.exit(1) PYTHON_TEST if [ $? -ne 0 ]; then echo "❌ Falha ao testar conexão com banco!" exit 1 fi echo "" # ============================================================================ # FASE 5: INICIALIZAR API # ============================================================================ echo "🚀 Iniciando API FastAPI..." echo "" echo "╔══════════════════════════════════════════════════════════════╗" echo "║ API ONLINE ║" echo "╚══════════════════════════════════════════════════════════════╝" echo "" echo "📍 Endpoints disponíveis:" echo " • Documentação: http://localhost:$PORT/api/docs" echo " • Health Check: http://localhost:$PORT/api/v1/health" echo " • Upload: http://localhost:$PORT/api/v1/process/upload" echo "" echo "💡 PostgreSQL rodando localmente (temporário)" echo "⚠️ ATENÇÃO: Dados são perdidos ao reiniciar o container!" echo "" echo "🔧 Para banco persistente, configure DATABASE_URL nas Secrets" echo " Recomendado: Neon (https://neon.tech) ou Supabase" echo "" echo "==================================================" echo "" # Executar comando passado (geralmente uvicorn) exec "$@"