services: # Database surreal: image: surrealdb/surrealdb:latest-dev ports: - 8000:8000 volumes: - surrealdb_storage:/mydata command: - start - --log - debug - --user - root - --pass - root - rocksdb:/mydata/database.db # Tracing tempo: image: grafana/tempo:latest command: [ "-config.file=/etc/tempo.yaml" ] volumes: - ./tempo.yaml:/etc/tempo.yaml - tempo_storage:/var/tempo ports: - 3200:3200 # self metrics for prometheus - 4317:4317 # otlp grpc - (alloy) # Log scraper alloy: image: grafana/alloy:latest ports: - 12345:12345 volumes: # if you change this, you also need to change it in the alloy config file - ./logs/:/tmp/alloy-logs - ./alloy.conf:/etc/alloy/config.alloy - alloy_storage:/var/lib/alloy command: - run - --server.http.listen-addr=0.0.0.0:12345 - --storage.path=/var/lib/alloy/data - /etc/alloy/config.alloy # Log storage / analysis loki: image: grafana/loki:latest ports: - 3100:3100 command: -config.file=/etc/loki/local-config.yaml volumes: - ./loki.yaml:/etc/loki/local-config.yaml # Metrics prometheus: image: prom/prometheus:latest ports: - 9090:9090 volumes: - ./prometheus.yaml:/etc/prometheus/prometheus.yml # persist data # - prometheus_storage:/prometheus command: - --enable-feature=native-histograms - --web.enable-remote-write-receiver - --web.enable-lifecycle - --config.file=/etc/prometheus/prometheus.yml # Everything viewer grafana: image: grafana/grafana:latest volumes: - ./grafana.yaml:/etc/grafana/provisioning/datasources/datasources.yaml - ./dashboards:/var/lib/grafana/dashboards - grafana_storage:/var/lib/grafana environment: - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=true - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor ports: - 3000:3000 volumes: prometheus_storage: grafana_storage: alloy_storage: surrealdb_storage: tempo_storage: