services: jenkins: image: jenkins/jenkins:lts-jdk17 user: root container_name: jenkins ports: - "8080:8080" - "50000:50000" environment: - JENKINS_OPTS=--prefix=/jenkins volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock networks: - devops-net sonarqube: image: sonarqube:10.5.1-community container_name: sonarqube ports: - "9000:9000" environment: - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs networks: - devops-net prometheus: image: prom/prometheus:v2.53.1 container_name: prometheus command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=15d - --web.enable-lifecycle volumes: - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus_data:/prometheus ports: - "9090:9090" networks: - devops-net grafana: image: grafana/grafana-oss:11.1.0 container_name: grafana ports: - "3030:3000" environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_INSTALL_PLUGINS=grafana-piechart-panel volumes: - grafana_data:/var/lib/grafana networks: - devops-net depends_on: - prometheus zap: image: ghcr.io/zaproxy/zaproxy:stable platform: linux/amd64 container_name: zap command: [ "zap.sh", "-daemon", "-host", "0.0.0.0", "-port", "8081", "-config", "api.disablekey=true", ] ports: - "8081:8081" volumes: - ./zap/wrk:/zap/wrk networks: - devops-net volumes: jenkins_home: sonarqube_data: sonarqube_extensions: sonarqube_logs: prometheus_data: grafana_data: networks: devops-net: driver: bridge