Files
lgtm-stack/docker-compose.yaml
T
2026-07-31 16:09:54 +00:00

82 lines
2.1 KiB
YAML

volumes:
tempo-data:
mimir-data:
loki-data:
grafana-data:
services:
# OpenTelemetry Collector - receives and routes all telemetry
otel-collector:
image: otel/opentelemetry-collector-contrib
container_name: otel-collector-lgtm
restart: unless-stopped
ports:
- 4317:4317 # gprc
- 4318:4318 # http
volumes:
- ./config/otel-collector.yaml:/etc/otelcol-contrib/config.yaml
- ./ssl/ca.crt:/etc/otelcol-contrib/ca.crt
- ./ssl/server.crt:/etc/otelcol-contrib/otel.crt
- ./ssl/server.key:/etc/otelcol-contrib/otel.key
depends_on:
- tempo
- mimir
- loki
# Grafana Tempo - distributed tracing backend
tempo:
image: grafana/tempo:latest
container_name: tempo
restart: unless-stopped
volumes:
- ./config/tempo.yaml:/etc/tempo/config.yaml
- tempo-data:/var/tempo
command: ["-config.file=/etc/tempo/config.yaml"]
ports:
- "3200:3200" # Tempo API
# Grafana Mimir - long-term metrics storage
mimir:
image: grafana/mimir:latest
container_name: mimir
restart: unless-stopped
volumes:
- ./config/mimir.yaml:/etc/mimir/config.yaml
- mimir-data:/data
command: ["-config.file=/etc/mimir/config.yaml"]
ports:
- "9009:9009" # Mimir API
# Grafana Loki - log aggregation
loki:
image: grafana/loki:latest
container_name: loki
restart: unless-stopped
volumes:
- ./config/loki.yaml:/etc/loki/config.yaml
- loki-data:/loki
command: ["-config.file=/etc/loki/config.yaml"]
ports:
- "3100:3100" # Loki API
# Grafana - visualization and dashboards
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_DISABLE_LOGIN_FORM=true
volumes:
- ./config/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
- grafana-data:/var/lib/grafana
ports:
- "3000:3000" # Grafana UI
depends_on:
- tempo
- mimir
- loki