bigRAG
Deployment

Docker

Deploy bigRAG with Docker Compose.

Quick Start

Pull the image

docker pull yoginth/bigrag:latest

Start the stack

docker compose up -d

This starts bigRAG API, Postgres, Redis, and Milvus.

Verify

curl http://localhost:6100/health

Docker Compose

The default docker-compose.yml runs the full stack including Milvus with its etcd dependency:

services:
  bigrag:
    image: yoginth/bigrag:latest
    ports:
      - "6100:6100"
    volumes:
      - bigrag_data:/data
    environment:
      BIGRAG_DATABASE_URL: postgres://bigrag:bigrag@postgres:5432/bigrag?sslmode=disable
      BIGRAG_MILVUS_URI: http://milvus:19530
      BIGRAG_REDIS_URL: redis://redis:6379/0
      BIGRAG_UPLOAD_DIR: /data/uploads
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
      milvus:
        condition: service_healthy

  postgres:
    image: postgres:17
    environment:
      POSTGRES_USER: bigrag
      POSTGRES_PASSWORD: bigrag
      POSTGRES_DB: bigrag
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U bigrag"]
      interval: 10s
      timeout: 5s
      retries: 5

  milvus-etcd:
    image: quay.io/coreos/etcd:v3.5.18
    environment:
      ETCD_AUTO_COMPACTION_MODE: revision
      ETCD_AUTO_COMPACTION_RETENTION: "1000"
      ETCD_QUOTA_BACKEND_BYTES: "4294967296"
    volumes:
      - etcd_data:/etcd
    command: >
      etcd
      -advertise-client-urls=http://127.0.0.1:2379
      -listen-client-urls=http://0.0.0.0:2379
      --data-dir=/etcd

  milvus:
    image: milvusdb/milvus:v2.5.4
    command: ["milvus", "run", "standalone"]
    ports:
      - "19530:19530"
    environment:
      ETCD_ENDPOINTS: milvus-etcd:2379
    volumes:
      - milvus_data:/var/lib/milvus
    depends_on:
      - milvus-etcd
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      timeout: 20s
      retries: 3

  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  bigrag_data:
  postgres_data:
  etcd_data:
  milvus_data:
  redis_data:

Service Ports

ServiceDefault Port
bigRAG API6100
PostgreSQL5432 (5433 in dev)
Milvus19530
Redis6379 (6380 in dev)

Health Checks

Monitor service health:

# bigRAG
curl http://localhost:6100/health/ready

# Postgres
docker exec bigrag-postgres pg_isready -U bigrag

# Milvus
curl -f http://localhost:9091/healthz

# Redis
docker exec bigrag-redis redis-cli ping

The /health/ready endpoint checks connectivity to all dependencies and returns 503 with "status": "degraded" if any are unhealthy.

On this page