Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql+asyncpg://postgres:${ECOGUARD_DOCKER_POSTGRES_PASSWORD:-ecoguard-local-password}@postgres:5432/ecoguard
      - REDIS_URL=${ECOGUARD_REDIS_URL:-redis://redis:6379}
      - MODEL_PATH=/app/models/tinyllama.gguf
      - ENVIRONMENT=production
      - LOG_LEVEL=INFO
      - AUTH_ENABLED=true
      - API_KEYS=[]
      - JWT_SECRET=${ECOGUARD_DOCKER_JWT_SECRET:?Set ECOGUARD_DOCKER_JWT_SECRET (min 32 chars)}
      - ADMIN_USERNAME=${ECOGUARD_DOCKER_ADMIN_USERNAME:?Set ECOGUARD_DOCKER_ADMIN_USERNAME}
      - ADMIN_PASSWORD=${ECOGUARD_DOCKER_ADMIN_PASSWORD:?Set ECOGUARD_DOCKER_ADMIN_PASSWORD}
      - CORS_ORIGINS=${ECOGUARD_DOCKER_CORS_ORIGINS:-["http://localhost:8000","http://localhost:5173"]}
      - RATE_LIMIT_ENABLED=true
      - METRICS_ENABLED=true
      - CACHE_ENABLED=false
      - CACHE_TTL_SECONDS=300
      - CACHE_MAX_ENTRIES=1000
      - AUTO_MIGRATE=true
      - GUARDRAILS_ENABLED=${ECOGUARD_GUARDRAILS_ENABLED:-false}
      - IP_ALLOWLIST=${ECOGUARD_IP_ALLOWLIST:-[]}
      - REQUEST_TIMEOUT_SECONDS=120
      - MAX_CONCURRENT_INFERENCE=4
      - DRIFT_ALERT_THRESHOLD=0.8
      - DEMO_MODE=false
      - OTLP_ENDPOINT=${ECOGUARD_OTLP_ENDPOINT:-}
      - BACKEND=${ECOGUARD_BACKEND:-llama-cpp}
      - BACKEND_URL=${ECOGUARD_BACKEND_URL:-}
    volumes:
      - ./models:/app/models:ro
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 60s

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5

  postgres:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=${ECOGUARD_DOCKER_POSTGRES_PASSWORD:-ecoguard-local-password}
      - POSTGRES_DB=ecoguard
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d ecoguard"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:
  redis_data: