# ============================================================================ # Docker Compose para desenvolvimento local - para.AI API v3.0 # ============================================================================ # # Uso: # docker-compose up -d # Iniciar todos os serviços # docker-compose logs -f api # Ver logs da API # docker-compose down # Parar todos os serviços # docker-compose down -v # Parar e remover volumes # # ============================================================================ version: '3.1' services: # ========================================================================== # PostgreSQL Database # ========================================================================== db: image: postgres:15-alpine container_name: para_ai_db restart: unless-stopped environment: POSTGRES_USER: para_ai POSTGRES_PASSWORD: para_ai_dev_2026 POSTGRES_DB: para_ai POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=pt_BR.UTF-8" ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./database/init_db.sql:/docker-entrypoint-initdb.d/01-init.sql - ./scripts/seed_data.sql:/docker-entrypoint-initdb.d/02-seed.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U para_ai -d para_ai"] interval: 10s timeout: 5s retries: 5 networks: - para_ai_network # ========================================================================== # Redis (opcional - para cache) # ========================================================================== redis: image: redis:7-alpine container_name: para_ai_redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - para_ai_network # ========================================================================== # API Application # ========================================================================== api: build: context: . dockerfile: Dockerfile container_name: para_ai_api restart: unless-stopped depends_on: db: condition: service_healthy redis: condition: service_healthy environment: # App APP_ENV: development DEBUG: "true" # Database DATABASE_URL: postgresql://para_ai:para_ai_dev_2026@db:5432/para_ai DB_POOL_SIZE: 10 DB_MAX_OVERFLOW: 20 # LLM Providers (use suas keys reais aqui ou via .env) GROQ_API_KEY: ${GROQ_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} # Cache ENABLE_CACHE: "true" REDIS_URL: redis://redis:6379/0 # Processing ENABLE_PARALLEL: "true" MAX_CONCURRENT_PROCESSES: 3 # Logging LOG_LEVEL: DEBUG ports: - "7860:7860" volumes: - ./:/app - api_data:/app/data - api_logs:/app/logs healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7860/api/v1/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - para_ai_network # ========================================================================== # pgAdmin (opcional - interface web para PostgreSQL) # ========================================================================== pgadmin: image: dpage/pgadmin4:latest container_name: para_ai_pgadmin restart: unless-stopped environment: PGADMIN_DEFAULT_EMAIL: admin@para.ai PGADMIN_DEFAULT_PASSWORD: admin123 PGADMIN_CONFIG_SERVER_MODE: 'False' ports: - "5050:80" volumes: - pgadmin_data:/var/lib/pgadmin depends_on: - db networks: - para_ai_network # ============================================================================ # VOLUMES # ============================================================================ volumes: postgres_data: driver: local redis_data: driver: local api_data: driver: local api_logs: driver: local pgadmin_data: driver: local # ============================================================================ # NETWORKS # ============================================================================ networks: para_ai_network: driver: bridge