Path: blob/main/example/docker-compose/docker-compose.yaml
4095 views
version: "3"1services:2#3# Core services. These services allow a Grafana Agent to send data somewhere4# and visualize it in Grafana.5#6# Backends: grafana, loki, cortex, tempo7# Example services: avalanche8#910grafana:11image: grafana/grafana:9.2.312entrypoint:13- /usr/share/grafana/bin/grafana-server14- --homepath=/usr/share/grafana15- --config=/etc/grafana-config/grafana.ini16volumes:17- ./grafana/config:/etc/grafana-config18- ./grafana/datasources:/etc/grafana/provisioning/datasources19- ./grafana/dashboards-provisioning:/etc/grafana/provisioning/dashboards20- ./grafana/dashboards:/var/lib/grafana/dashboards21ports:22- "3000:3000"2324loki:25image: grafana/loki:2.6.126command: -config.file=/etc/loki/local-config.yaml27ports:28- "3100:3100"2930cortex:31image: cortexproject/cortex:v1.8.132volumes:33- ./cortex/config:/etc/cortex-config34entrypoint:35- /bin/cortex36- -config.file=/etc/cortex-config/cortex.yaml37ports:38- "9009:9009"3940tempo:41image: grafana/tempo:1.5.042command:43- "-search.enabled=true"44- "-storage.trace.backend=local" # tell tempo where to permanently put traces45- "-storage.trace.local.path=/tmp/tempo/traces"46- "-storage.trace.wal.path=/tmp/tempo/wal" # tell tempo where to store the wal47- "-auth.enabled=false" # disables the requirement for the X-Scope-OrgID header48- "-server.http-listen-port=3200"49ports:50- "3200:3200"51- "4317:4317"5253avalanche:54image: quay.io/freshtracks.io/avalanche:latest55command:56- --metric-count=300057- --series-interval=360058- --metric-interval=720059ports:60- "9001:9001"6162# tracing load generator63synthetic-load-generator:64profiles: [agent] # Should only be run if the Agent is present65image: omnition/synthetic-load-generator:1.0.2566volumes:67- ./load-generator:/etc/load-generator68environment:69- TOPOLOGY_FILE=/etc/load-generator/load-generator.json70- JAEGER_COLLECTOR_URL=http://agent:1426871depends_on:72- agent7374#75# Optional Grafana Agent which can collect telemetry and send it to76# Loki/Cortex/Tempo.77#78# Enable with the "agent" profile.79#8081agent:82profiles: [agent]83image: grafana/agent:latest84volumes:85- ./agent/config:/etc/agent-config86entrypoint:87- /bin/agent88- -server.http.address=0.0.0.0:1234589- -config.file=/etc/agent-config/agent.yaml90- -metrics.wal-directory=/tmp/agent/wal91- -enable-features=integrations-next92- -config.expand-env93- -config.enable-read-api94environment:95HOSTNAME: agent96REMOTE_WRITE_HOST: cortex:900997LOKI_HOST: loki:310098TEMPO_HOST: tempo:431799AVALANCHE_HOST: avalanche:9001100MYSQL_HOST: mysql:3306101POSTGRES_HOST: postgres:5432102REDIS_HOST: redis:6379103DNSMASQ_HOST: dnsmasq:53104MEMCACHED_HOST: memcached:11211105CONSUL_HOST: consul:8500106ELASTICSEARCH_HOST: elasticsearch:9200107KAFKA_HOST: kafka:9093108MONGODB_HOST: mongodb:27017109ports:110- "12345:12345"111depends_on:112- cortex113- loki114- tempo115116#117# Integrations. These services act as sample SUOs that you can test118# integrations against.119#120# They are disabled by default. Enable the "integrations" profile to enable121# all of them, or pass an integration by name (i.e., mysql) to enable a122# specific one.123#124125mysql:126profiles: [integrations,mysql]127image: mysql/mysql-server:5.7128environment:129- MYSQL_ALLOW_EMPTY_PASSWORD=yes130- MYSQL_ROOT_HOST=%131ports:132- 127.0.0.1:3306:3306133134postgres:135profiles: [integrations,postgres]136image: postgres:13.0137environment:138- POSTGRES_USER=postgres139- POSTGRES_PASSWORD=password140ports:141- 5432:5432142143redis:144profiles: [integrations,redis]145image: redis:6146ports:147- "6379:6379"148149dnsmasq:150profiles: [integrations,dnsmasq]151image: andyshinn/dnsmasq:2.81152cap_add: [NET_ADMIN]153volumes:154- /tmp/dnsmasq-leases:/var/lib/misc155ports:156- "30053:53/udp"157158memcached:159profiles: [integrations,memcached]160image: memcached161ports:162- "11211:11211"163164consul:165profiles: [integrations,consul]166image: consul167ports:168- "8500:8500"169170elasticsearch:171profiles: [integrations,elasticsearch]172image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1173environment:174- node.name=elasticsearch175- cluster.name=es-grafana-agent-cluster176- discovery.type=single-node177volumes:178- elasticsearch_data:/usr/share/elasticsearch/data179ports:180- "9200:9200"181182zookeeper:183profiles: [integrations,zookeeper]184image: wurstmeister/zookeeper:3.4.6185expose:186- "2181"187restart: always188189kafka:190profiles: [integrations,kafka]191image: wurstmeister/kafka:2.12-2.3.0192depends_on:193- zookeeper194ports:195- "127.0.0.1:9093:9093"196expose:197- "9092"198- "9094"199environment:200KAFKA_CREATE_TOPICS: "sarama_topic:2:1"201KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092,OUTSIDE://127.0.0.1:9093,DOCKER://kafka:9094202KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT,DOCKER:PLAINTEXT203KAFKA_LISTENERS: INSIDE://kafka:9092,OUTSIDE://:9093,DOCKER://kafka:9094204KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181205KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE206restart: always207208kafka-producer:209profiles: [integrations,kafka]210image: gaantunes/kafka-client:latest211depends_on:212- kafka213command:214--producer --kafka.server kafka:9094215restart: always216217kafka-consumer:218profiles: [integrations,kafka]219image: gaantunes/kafka-client:latest220depends_on:221- kafka222command:223--consumer --kafka.server kafka:9094224restart: always225226mongodb:227profiles: [integrations,mongodb]228image: mongo:4.2229ports:230- "127.0.0.1:27017:27017"231232volumes:233elasticsearch_data:234driver: local235236237