# Smart App City — Docker Compose

version: "3.8"

services:
  # API Gateway
  api-gateway:
    build: ./backend/api-gateway
    container_name: smartapp-gateway
    ports:
      - "8000:8000"
    environment:
      - KEYCLOAK_URL=http://openremote-keycloak:8080/auth
      - LOCALAI_URL=http://localai-api:8080
      - QDRANT_URL=http://qdrant:***
      - REDIS_URL=redis://redis:6379
    networks:
      - smartcity-shared
    restart: always

  # RAG Service
  rag-service:
    build: ./ai/rag-service
    container_name: smartapp-rag
    ports:
      - "8001:8001"
    environment:
      - LOCALAI_URL=http://localai-api:8080
      - QDRANT_URL=http://qdrant:***
      - EMBEDDING_MODEL=intfloat/multilingual-e5-large
    networks:
      - smartcity-shared
    depends_on:
      - api-gateway
    restart: always

  # Agent Service
  agent-service:
    build: ./ai/agent-service
    container_name: smartapp-agent
    ports:
      - "8002:8002"
    environment:
      - LOCALAI_URL=http://localai-api:8080
      - RAG_URL=http://rag-service:8001
    networks:
      - smartcity-shared
    depends_on:
      - rag-service
    restart: always

  # Qdrant (if not existing)
  qdrant:
    image: qdrant/qdrant:v1.9.0
    container_name: smartapp-qdrant
    ports:
      - "6333:6333"
    volumes:
      - qdrant_data:/qdrant/storage
    networks:
      - smartcity-shared
    restart: always

  # Meilisearch (if not existing)
  meilisearch:
    image: getmeili/meilisearch:v1.7
    container_name: smartapp-search
    ports:
      - "7700:7700"
    volumes:
      - meilisearch_data:/meili_data
    networks:
      - smartcity-shared
    restart: always

networks:
  smartcity-shared:
    external: true

volumes:
  qdrant_data:
  meilisearch_data:
