version: '3.8' services: victoriametrics: image: victoriametrics/victoria-metrics:latest container_name: ping_river_victoriametrics ports: - "8428:8428" volumes: - vm_data:/victoria-metrics-data - ./vm-config:/etc/victoriametrics command: - '--storageDataPath=/victoria-metrics-data' - '--retentionPeriod=2y' - '--httpListenAddr=:8428' - '--maxConcurrentInserts=32' - '--search.maxQueryDuration=60s' - '--search.maxConcurrentRequests=16' - '--dedup.minScrapeInterval=30s' - '--memory.allowedPercent=80' - '--loggerLevel=INFO' - '--loggerFormat=json' - '--search.maxSeries=1000000' - '--search.maxPointsPerTimeseries=100000' restart: unless-stopped environment: - TZ=Asia/Bangkok healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8428/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s labels: - "com.victoriametrics.service=ping-river-monitoring" grafana: image: grafana/grafana:latest container_name: ping_river_grafana ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning - ./grafana/dashboards:/var/lib/grafana/dashboards environment: - GF_SECURITY_ADMIN_PASSWORD=admin_password - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-worldmap-panel - GF_USERS_ALLOW_SIGN_UP=false - GF_SECURITY_ALLOW_EMBEDDING=true - GF_AUTH_ANONYMOUS_ENABLED=false - TZ=Asia/Bangkok restart: unless-stopped depends_on: victoriametrics: condition: service_healthy labels: - "com.victoriametrics.service=ping-river-monitoring" ping-river-monitor: build: . container_name: ping_river_monitor environment: - DB_TYPE=victoriametrics - VM_HOST=victoriametrics - VM_PORT=8428 - TZ=Asia/Bangkok restart: unless-stopped depends_on: victoriametrics: condition: service_healthy volumes: - ./logs:/app/logs labels: - "com.victoriametrics.service=ping-river-monitoring" ping-river-api: build: . container_name: ping_river_api ports: - "8000:8000" environment: - DB_TYPE=victoriametrics - VM_HOST=victoriametrics - VM_PORT=8428 - TZ=Asia/Bangkok restart: unless-stopped depends_on: victoriametrics: condition: service_healthy volumes: - ./logs:/app/logs command: ["python", "-m", "src.main", "--web-api"] labels: - "com.victoriametrics.service=ping-river-monitoring" volumes: vm_data: driver: local grafana_data: driver: local networks: default: name: ping-river-monitoring driver: bridge