name: zhifu-platform services: replica-gateway: image: haproxy:3.2-alpine@sha256:5961c68bc8a81c5124d0a98ab20f81b74717d6afe596e805977d9cf84c126222 profiles: ["replica-tests"] ports: ["127.0.0.1:18080:8080", "127.0.0.1:18200:8200", "127.0.0.1:18404:8404"] volumes: - ./ops/haproxy/replicas.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro prometheus: image: prom/prometheus:v3.14.0 profiles: ["monitoring"] command: ["--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d"] ports: ["127.0.0.1:19090:9090"] volumes: - ./ops/prometheus:/etc/prometheus:ro - prometheus-data:/prometheus restart: unless-stopped alertmanager: image: prom/alertmanager:v0.34.1 profiles: ["monitoring"] command: ["--config.file=/etc/alertmanager/alertmanager.yml"] ports: ["127.0.0.1:19093:9093"] volumes: - ./ops/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro - alertmanager-data:/alertmanager restart: unless-stopped grafana: image: grafana/grafana:13.2.2 profiles: ["monitoring"] environment: GF_SECURITY_ADMIN_USER: zhifu GF_SECURITY_ADMIN_PASSWORD: zhifu_local_only GF_AUTH_ANONYMOUS_ENABLED: "true" GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer GF_ANALYTICS_REPORTING_ENABLED: "false" GF_ANALYTICS_CHECK_FOR_UPDATES: "false" ports: ["127.0.0.1:13000:3000"] volumes: - ./ops/grafana/provisioning:/etc/grafana/provisioning:ro - ./ops/grafana/dashboards:/var/lib/grafana/dashboards:ro - grafana-data:/var/lib/grafana restart: unless-stopped etcd: image: quay.io/coreos/etcd:v3.5.25 command: ["etcd", "--advertise-client-urls=http://etcd:2379", "--listen-client-urls=http://0.0.0.0:2379", "--data-dir=/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"] restart: unless-stopped minio: image: quay.io/minio/minio:RELEASE.2024-05-28T17-19-04Z command: ["minio", "server", "/data"] volumes: ["minio-data:/data"] restart: unless-stopped milvus: image: milvusdb/milvus:v3.0.1 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 MINIO_REGION: us-east-1 depends_on: [etcd, minio] ports: ["127.0.0.1:19530:19530", "127.0.0.1:19091:9091"] volumes: ["milvus-data:/var/lib/milvus"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 10s timeout: 5s retries: 30 start_period: 90s restart: unless-stopped toxiproxy: image: ghcr.io/shopify/toxiproxy:2.12.0 profiles: ["fault-tests"] ports: ["127.0.0.1:18474:8474", "127.0.0.1:18100:18100"] rabbitmq: image: rabbitmq:4.2-management environment: RABBITMQ_DEFAULT_USER: zhifu RABBITMQ_DEFAULT_PASS: zhifu_local_only ports: ["127.0.0.1:15672:5672", "127.0.0.1:15673:15672"] volumes: ["rabbitmq-data:/var/lib/rabbitmq"] healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 5s timeout: 5s retries: 30 restart: unless-stopped mysql-oms: image: mysql:8.4 environment: MYSQL_DATABASE: oms MYSQL_USER: oms MYSQL_PASSWORD: oms_local_only MYSQL_ROOT_PASSWORD: oms_root_local_only ports: ["127.0.0.1:13307:3306"] volumes: ["oms-data:/var/lib/mysql"] healthcheck: test: ["CMD-SHELL", "MYSQL_PWD=$$MYSQL_PASSWORD mysql -h 127.0.0.1 -u $$MYSQL_USER -D $$MYSQL_DATABASE -e 'SELECT 1' > /dev/null"] interval: 5s timeout: 3s retries: 30 restart: unless-stopped mysql: image: mysql:8.4 environment: MYSQL_DATABASE: zhifu MYSQL_USER: zhifu MYSQL_PASSWORD: zhifu_local_only MYSQL_ROOT_PASSWORD: root_local_only ports: ["127.0.0.1:13306:3306"] volumes: ["mysql-data:/var/lib/mysql"] healthcheck: test: ["CMD-SHELL", "MYSQL_PWD=$$MYSQL_PASSWORD mysql -h 127.0.0.1 -u $$MYSQL_USER -D $$MYSQL_DATABASE -e 'SELECT 1' > /dev/null"] interval: 5s timeout: 3s retries: 30 restart: unless-stopped redis-cache: image: redis:8.2 command: ["redis-server", "--maxmemory", "128mb", "--maxmemory-policy", "allkeys-lru", "--save", ""] ports: ["127.0.0.1:16379:6379"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped redis-state: image: redis:8.2 command: ["redis-server", "--appendonly", "yes", "--appendfsync", "everysec", "--maxmemory", "256mb", "--maxmemory-policy", "noeviction"] ports: ["127.0.0.1:16380:6379"] volumes: ["redis-state-data:/data"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped volumes: prometheus-data: alertmanager-data: grafana-data: etcd-data: minio-data: milvus-data: rabbitmq-data: oms-data: mysql-data: redis-state-data: