version: '3' services: postgres: image: postgres:latest environment: - POSTGRES_USER=grafana - POSTGRES_PASSWORD - POSTGRES_DB=grafanadb volumes: - ./data/postgres:/var/lib/postgresql/data/ restart: always healthcheck: test: pg_isready -U grafana -d grafanadb interval: 10s timeout: 5s retries: 5 redis: image: redis:latest restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 grafana: image: grafana/grafana:latest user: "1000" volumes: - ./data/grafana:/var/lib/grafana - ./data/grafana-config:/etc/grafana ports: - 127.0.0.1:84:3000 restart: always depends_on: - postgres - redis prometheus: image: prom/prometheus:latest container_name: grafana_prometheus restart: always command: - --config.file=/etc/prometheus/prometheus.yml volumes: - ./conf/prometheus.yml:/etc/prometheus/prometheus.yml - ./data/prometheus:/prometheus extra_hosts: - "host.docker.internal:host-gateway" unbound-telemetry: build: unbound-telemetry restart: always command: - uds - --control-interface - /data/remote-control.sock volumes: - ./data/unbound-telemetry:/data healthcheck: test: curl --silent --fail http://127.0.0.1:9167/healthcheck || exit 1 interval: 10s timeout: 1s retries: 5