File size: 4,505 Bytes
0211e6e
 
 
 
 
 
 
 
 
 
 
 
1ef5356
0211e6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ef5356
0211e6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# ============================================================================
# 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