version: '3.8' services: standalone: container_name: milvus image: milvusdb/milvus:v2.3.3 command: ['milvus', 'run', 'standalone'] security_opt: - seccomp:unconfined environment: ETCD_USE_EMBED: 'true' ETCD_DATA_DIR: '/etcd' ETCD_CONFIG_PATH: '/milvus/configs/embedEtcd.yaml' COMMON_STORAGETYPE: 'local' volumes: - milvus:/var/lib/milvus - ./milvus.yaml:/milvus/configs/milvus.yaml - etcd:/etcd - ${DOCKER_VOLUME_DIRECTORY:-.}/embedEtcd.yaml:/milvus/configs/embedEtcd.yaml healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:9091/healthz'] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - '19530:19530' - '9091:9091' networks: - rubra logging: driver: json-file options: max-size: '10m' max-file: '3' mongodb: image: mongo container_name: mongodb ports: - '27017:27017' volumes: - mongodb:/data/db networks: - rubra redis: image: redis container_name: redis command: redis-server --appendonly yes ports: - '6379:6379' networks: - rubra litellm: image: ghcr.io/berriai/litellm:main-v1.22.9 ports: - '8002:8002' container_name: litellm volumes: - ./llm-config.yaml:/app/config.yaml command: ["--config", "/app/config.yaml", "--port", "8002", "--num_workers", "8"] healthcheck: test: ["CMD-SHELL", "litellm --health --port 8002"] interval: 30s timeout: 30s retries: 3 start_period: 40s networks: - rubra text-embedding-api: build: context: ./services/backend/text_embedding_api dockerfile: Dockerfile container_name: text-embedding-api image: ghcr.io/rubra-ai/rubra/text_embedding_api:${RUBRA_TAG:-main} ports: - '8020:8020' environment: - MODEL_NAME=sentence-transformers/all-MiniLM-L6-v2 networks: - rubra vector-db-api: build: context: ./services/backend/vector_db_api additional_contexts: - core=./core dockerfile: Dockerfile container_name: vector-db-api image: ghcr.io/rubra-ai/rubra/vector_db_api:${RUBRA_TAG:-main} ports: - '8010:8010' environment: - MILVUS_HOST=milvus - EMBEDDING_HOST=text-embedding-api networks: - rubra task-executor: build: context: ./services/backend/task_executor additional_contexts: # requires compose >=v2.17.0 - core=./core dockerfile: Dockerfile image: ghcr.io/rubra-ai/rubra/task_executor:${RUBRA_TAG:-main} container_name: task-executor environment: - REDIS_HOST=redis - MONGODB_HOST=mongodb - LITELLM_HOST=litellm - EMBEDDING_HOST=text-embedding-api - VECTOR_DB_HOST=vector-db-api - MILVUS_HOST=milvus - LITELLM_MASTER_KEY=abc depends_on: - redis - mongodb networks: - rubra api-server: build: context: ./services/backend/api_server additional_contexts: - core=./core dockerfile: Dockerfile image: ghcr.io/rubra-ai/rubra/api_server:${RUBRA_TAG:-main} container_name: api-server environment: - REDIS_HOST=redis - MONGODB_HOST=mongodb - LITELLM_HOST=litellm - MILVUS_HOST=milvus ports: - '8000:8000' depends_on: litellm: condition: service_healthy task-executor: condition: service_started networks: - rubra ui: build: context: ./services/frontend/ui dockerfile: Dockerfile image: ghcr.io/rubra-ai/rubra/ui:${RUBRA_TAG:-main} container_name: ui environment: - RUBRA_BACKEND_HOST=api-server ports: - "8501:8501" depends_on: - api-server networks: - rubra networks: rubra: name: rubra driver: bridge volumes: milvus: mongodb: etcd: