version: '3.8' volumes: prometheus_data: {} grafana_data: {} services: prometheus: image: prom/prometheus restart: always volumes: - ./prometheus:/etc/prometheus/ - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' ports: - 9090:9090 extra_hosts: - 'host.docker.internal:host-gateway' depends_on: - node-exporter node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - --collector.filesystem.ignored-mount-points - '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)' ports: - 9100:9100 restart: always deploy: mode: global grafana: image: grafana/grafana user: '472' restart: always environment: # do not really need it, just to leave it as an example on how to install plugins here GF_INSTALL_PLUGINS: 'grafana-clock-panel' volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning/:/etc/grafana/provisioning/ env_file: - ./grafana/config.monitoring ports: - 3000:3000 depends_on: - prometheus