version: '3.9' networks: monitoring: driver: bridge volumes: prometheus_data: {} grafana_data: {} services: prometheus: image: prom/prometheus:v2.32.1 container_name: prometheus volumes: - ./prometheus:/etc/prometheus - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' restart: unless-stopped expose: - 9090 networks: - monitoring labels: org.label-schema.group: "monitoring" grafana: image: grafana/grafana:8.3.3 container_name: grafana volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD} - GF_USERS_ALLOW_SIGN_UP=false restart: unless-stopped expose: - 3000 networks: - monitoring labels: org.label-schema.group: "monitoring" pde: build: . container_name: pde environment: - RAS_HOST=${RAS_HOST} - RAS_PORT=${RAS_PORT} - CLS_USER=${CLS_USER} - CLS_PASS=${CLS_PASS} - MODE=${MODE} - PUSH_INTERVAL=${PUSH_INTERVAL} - PUSH_HOST=${PUSH_HOST} - PUSH_PORT=${PUSH_PORT} restart: unless-stopped expose: - 9096 networks: - monitoring labels: org.label-schema.group: "monitoring" caddy: image: stefanprodan/caddy container_name: caddy ports: - "3000:3000" - "9090:9090" - "9096:9096" volumes: - ./caddy:/etc/caddy environment: - ADMIN_USER=${ADMIN_USER} - ADMIN_PASSWORD=${ADMIN_PASSWORD} restart: unless-stopped networks: - monitoring labels: org.label-schema.group: "monitoring" pushgateway: image: prom/pushgateway:v1.2.0 container_name: pushgateway restart: unless-stopped expose: - 9091 networks: - monitoring labels: org.label-schema.group: "monitoring"