version: '3.8' services: app: build: context: .. dockerfile: docker/Dockerfile.prod ports: - "7860:7860" environment: - DATABASE_URL=${DATABASE_URL} - HF_TOKEN=${HF_TOKEN} - OPENAI_API_KEY=${OPENAI_API_KEY:-} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-} - LLM_PROVIDER=${LLM_PROVIDER:-huggingface} - EMBEDDING_MODEL_ID=${EMBEDDING_MODEL_ID:-sentence-transformers/all-MiniLM-L6-v2} - TOP_K=${TOP_K:-4} - TEMPERATURE=${TEMPERATURE:-0.3} - MAX_TOKENS=${MAX_TOKENS:-512} env_file: - ../.env restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:7860').read()"] interval: 30s timeout: 10s retries: 3 start_period: 60s depends_on: postgres: condition: service_healthy networks: - rag-network volumes: - app-cache:/home/appuser/.cache postgres: image: ankane/pgvector:latest environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-ragdb} ports: - "${POSTGRES_PORT:-5433}:5432" volumes: - postgres-data:/var/lib/postgresql/data - ../db/init:/docker-entrypoint-initdb.d restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - rag-network shm_size: 128mb # Opcional: Redis para cache redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis-data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - rag-network command: redis-server --appendonly yes volumes: postgres-data: driver: local redis-data: driver: local app-cache: driver: local networks: rag-network: driver: bridge