services: node1: build: . container_name: stratago-node1 command: ["-node-id", "node1", "-raft-port", "17001", "-grpc-port", "18001", "-raft-host", "node1"] ports: - "18001:18001" # gRPC - "19001:19001" # HTTP management - "20001:20001" # Prometheus metrics healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:19001/status"] interval: 2s timeout: 2s retries: 5 networks: - strata-net volumes: - strata-data-1:/app/data node2: build: . container_name: stratago-node2 command: ["-node-id", "node2", "-raft-port", "17002", "-grpc-port", "18002", "-raft-host", "node2", "-join-addr", "node1:17001"] ports: - "18002:18002" - "19002:19002" - "20002:20002" # Prometheus metrics depends_on: node1: condition: service_healthy restart: on-failure networks: - strata-net volumes: - strata-data-2:/app/data node3: build: . container_name: stratago-node3 command: ["-node-id", "node3", "-raft-port", "17003", "-grpc-port", "18003", "-raft-host", "node3", "-join-addr", "node1:17001"] ports: - "18003:18003" - "19003:19003" - "20003:20003" # Prometheus metrics depends_on: node1: condition: service_healthy restart: on-failure networks: - strata-net volumes: - strata-data-3:/app/data prometheus: image: prom/prometheus:latest container_name: stratago-prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro ports: - "9090:9090" networks: - strata-net grafana: image: grafana/grafana:latest container_name: stratago-grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin networks: - strata-net depends_on: - prometheus volumes: - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro - ./grafana/dashboards:/var/lib/grafana/dashboards:ro networks: strata-net: driver: bridge volumes: strata-data-1: strata-data-2: strata-data-3: