version: '3.8' services: # MySQL 数据库 mysql: image: mysql:8.0 container_name: superbiz-mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: super_biz_agent MYSQL_USER: superbiz MYSQL_PASSWORD: superbiz123 TZ: Asia/Shanghai ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql - ./docker/mysql/init:/docker-entrypoint-initdb.d command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 # Redis 缓存 redis: image: redis:7-alpine container_name: superbiz-redis restart: always ports: - "6379:6379" volumes: - redis-data:/data command: redis-server --appendonly yes --requirepass redis123 healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 # Milvus 向量数据库(Standalone 模式) # 注意:生产环境建议使用 Zilliz Cloud 或 Milvus 集群 etcd: image: quay.io/coreos/etcd:v3.5.5 container_name: superbiz-etcd environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 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 healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 minio: image: minio/minio:RELEASE.2023-03-20T20-16-18Z container_name: superbiz-minio environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - minio-data:/minio_data command: minio server /minio_data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 milvus: image: milvusdb/milvus:v2.3.3 container_name: superbiz-milvus depends_on: - etcd - minio environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - milvus-data:/var/lib/milvus ports: - "19530:19530" - "9091:9091" command: ["milvus", "run", "standalone"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 volumes: mysql-data: redis-data: etcd-data: minio-data: milvus-data: networks: default: name: superbiz-network