github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/production/docker/docker-compose.yaml (about) 1 version: "3.8" 2 3 networks: 4 loki: 5 6 services: 7 8 # Since the Loki containers are running as user 10001 and the mounted data volume is owned by root, 9 # Loki would not have permissions to create the directories. 10 # Therefore the init container changes permissions of the mounted directory. 11 init: 12 image: grafana/loki:2.6.1 13 user: root 14 entrypoint: 15 - "chown" 16 - "10001:10001" 17 - "/loki" 18 volumes: 19 - ./loki:/loki 20 networks: 21 - loki 22 23 grafana: 24 image: grafana/grafana:8.5.9 25 ports: 26 - "3000:3000" 27 environment: 28 GF_AUTH_ANONYMOUS_ENABLED: "true" 29 GF_AUTH_DISABLE_LOGIN_FORM: "true" 30 GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin" 31 volumes: 32 - ./config/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yml 33 - grafana:/var/lib/grafana 34 networks: 35 - loki 36 37 prometheus: 38 image: prom/prometheus:v2.27.0 39 ports: 40 - 9090:9090 41 volumes: 42 - ./config/prometheus.yaml:/etc/prometheus/prometheus.yml 43 - prometheus:/prometheus 44 command: [ '--log.level=debug', '--config.file=/etc/prometheus/prometheus.yml', '--query.lookback-delta=30s' ] 45 networks: 46 - loki 47 48 # for testing purposes only, disable in production 49 log-generator: 50 image: mingrammer/flog 51 command: 52 - --loop 53 - --format=json 54 - --number=10 # number of log lines to generate per second 55 - --delay=100ms # delay between log lines 56 - --output=/var/log/generated-logs.txt 57 - --overwrite 58 - --type=log 59 volumes: 60 - ./loki/:/var/log/ 61 62 promtail: 63 image: grafana/promtail:2.6.1 64 volumes: 65 - ./loki/:/var/log/ 66 - ./config:/etc/promtail/ 67 ports: 68 - "9080:9080" 69 command: -config.file=/etc/promtail/promtail.yaml 70 networks: 71 - loki 72 73 minio: 74 image: minio/minio 75 entrypoint: 76 - sh 77 - -euc 78 - | 79 mkdir -p /data/loki-data && \ 80 mkdir -p /data/loki-ruler && 81 minio server /data 82 environment: 83 - MINIO_ACCESS_KEY=loki 84 - MINIO_SECRET_KEY=supersecret 85 - MINIO_PROMETHEUS_AUTH_TYPE=public 86 - MINIO_UPDATE=off 87 ports: 88 - "9000:9000" 89 volumes: 90 - ./.data/minio:/data 91 networks: 92 - loki 93 94 loki-gateway: 95 image: nginx:1.19 96 volumes: 97 - ./config/nginx.conf:/etc/nginx/nginx.conf 98 ports: 99 - "8080:80" 100 - "3100" 101 networks: 102 - loki 103 104 loki-frontend: 105 image: grafana/loki:2.6.1 106 volumes: 107 - ./config:/etc/loki/ 108 ports: 109 - "3100" 110 command: "-config.file=/etc/loki/loki.yaml -target=query-frontend -frontend.downstream-url=http://loki-read:3100" 111 networks: 112 - loki 113 deploy: 114 mode: replicated 115 replicas: 2 116 117 loki-read: 118 image: grafana/loki:2.6.1 119 volumes: 120 - ./config:/etc/loki/ 121 ports: 122 - "3100" 123 - "7946" 124 125 # uncomment to use interactive debugging 126 # - "40000-40002:40000" # # makes the replicas available on ports 40000, 40001, 40002 127 #cap_add: 128 # - SYS_PTRACE 129 #security_opt: 130 # - apparmor=unconfined 131 command: "-config.file=/etc/loki/loki.yaml -target=read" 132 networks: 133 - loki 134 restart: always 135 deploy: 136 mode: replicated 137 replicas: 3 138 # only needed for interactive debugging with dlv 139 140 loki-write: 141 image: grafana/loki:2.6.1 142 volumes: 143 - ./config:/etc/loki/ 144 ports: 145 - "3100" 146 - "7946" 147 148 # uncomment to use interactive debugging 149 # - "50000-50002:40000" # makes the replicas available on ports 50000, 50001, 50002 150 # cap_add: 151 # - SYS_PTRACE 152 # security_opt: 153 # - apparmor=unconfined 154 command: "-config.file=/etc/loki/loki.yaml -target=write" 155 networks: 156 - loki 157 restart: always 158 deploy: 159 mode: replicated 160 replicas: 3 161 162 volumes: 163 prometheus: 164 grafana: