File size: 3,265 Bytes
79ca3d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f6803e9
 
 
 
 
 
 
 
 
 
 
 
a504663
 
 
 
 
 
 
 
 
 
 
 
 
 
79ca3d4
 
 
 
a504663
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
version: "3.9"

# Milvus standalone stack β€” all you need for Phase 1 development.
# Run: docker-compose up -d
# Stop: docker-compose down
# Data is persisted in Docker volumes (volumes: block at the bottom).

services:

  # ── etcd (Milvus metadata store) ──────────────────────────────
  etcd:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: cortex-etcd
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    command: >
      etcd
      --name etcd0
      --data-dir /etcd
      --initial-advertise-peer-urls http://etcd:2380
      --listen-peer-urls http://0.0.0.0:2380
      --advertise-client-urls http://etcd:2379
      --listen-client-urls http://0.0.0.0:2379
      --initial-cluster etcd0=http://etcd:2380
    volumes:
      - etcd_data:/etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  # ── MinIO (Milvus object store) ───────────────────────────────
  minio:
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    container_name: cortex-minio
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: minio server /minio_data --console-address ":9001"
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - minio_data:/minio_data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  # ── Milvus standalone ─────────────────────────────────────────
  milvus:
    image: milvusdb/milvus:v2.4.0
    container_name: cortex-milvus
    command: ["milvus", "run", "standalone"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    ports:
      - "19530:19530"   # gRPC (used by pymilvus)
      - "9091:9091"     # Milvus health / metrics
    volumes:
      - milvus_data:/var/lib/milvus
    depends_on:
      etcd:
        condition: service_healthy
      minio:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      timeout: 20s
      retries: 5

  # ── Attu (Milvus UI) ───────────────────────────
  attu:
    image: zilliz/attu:v2.4
    container_name: cortex-attu
    environment:
      - MILVUS_URL=milvus:19530
    ports:
      - "3000:3000"
    depends_on:
      milvus:
        condition: service_healthy

  # ── Redis (Cache/Message Broker) ───────────────────────────
  # redis:
  #   image: redis:7-alpine
  #   container_name: cortex-redis
  #   ports:
  #     - "6379:6379"
  #   volumes:
  #     - redis_data:/data
  #   healthcheck:
  #     test: ["CMD", "redis-cli", "ping"]
  #     interval: 10s
  #     timeout: 5s
  #     retries: 5

volumes:
  etcd_data:
  minio_data:
  milvus_data:
  # redis_data: