Skip to content
Snippets Groups Projects
docker-compose.yml 4.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • Sven-Ove Hänsel's avatar
    Sven-Ove Hänsel committed
    version: '3.8'
    
    services:
      # Dashboard für Metriken
      grafana:
        image: grafana/grafana-oss:latest
        container_name: grafana
        ports:
          - "127.0.0.1:3000:3000"
        volumes:
          - ./monitoring/grafana-data:/var/lib/grafana
        restart: unless-stopped
    
      # TSDB zum Speichern der Metriken
      prometheus:
        image: prom/prometheus:v2.37.9
        container_name: prometheus
        ports:
          - 127.0.0.1:9090:9090
        command: "--config.file=/etc/prometheus/prometheus.yml"
        volumes:
          - ./monitoring/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml
          - ./monitoring/prometheus/data:/prometheus
        restart: unless-stopped
        
      # Container Advisor - Docker Compose Metriken zu scrapen
      cadvisor:
        image: gcr.io/cadvisor/cadvisor:v0.47.0     
        container_name: cadvisor
        ports:
          - 8080:8080
        volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:ro
          - /sys:/sys:ro
          - /var/lib/docker/:/var/lib/docker:rob 
          - /dev/disk/:/dev/disk:ro
        devices:
          - /dev/kmsg
        privileged: true
        restart: unless-stopped
      
      # Exporter für Postgres Statistiken/Metriken 
      postgres_exporter:
        image: bitnami/postgres-exporter:latest
        ports:
          - 9187:9187
        environment:
          - DATA_SOURCE_NAME=postgresql://postgres:postgres@postgres:5432/postgres?sslmode=disable
        depends_on:
          - postgres
    
      # Datenbank Container - Neo4j
      neo4j:
        image: neo4j:enterprise
        container_name: neo4j
        volumes:
          - ./neo4j/container_e/data:/data 
          - ./neo4j/container_e/logs:/logs  
          - ./neo4j/container_e/import:/var/lib/neo4j/import 
          - ./neo4j/container_e/conf:/var/lib/neo4j/conf
        ports:
          - 7474:7474
          - 7687:7687 
          - 2004:2004
        environment:
          - NEO4J_AUTH=none 
          - NEO4J_server_metrics_prometheus_enabled=true
          - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
          - NEO4J_server_metrics_prometheus_endpoint=0.0.0.0:2004
        healthcheck:
          test: ["CMD", "wget", "http://neo4j:7474"]
          interval: 30s
          timeout: 10s
          retries: 5
    
      # Datenbank Container - Postgres
      postgres:
        image: postgres:latest
        container_name: postgres
        environment:
          - POSTGRES_DB=postgres
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        logging:
          options:
            max-size: 10m
            max-file: "3"
        ports:
          - 5432:5432
        volumes: 
          - ./sql/docker/data:/var/lib/postgresql/data 
          # copy the sql script to create tables
          - ./sql/skript/import_cadets:/opt/import_cadets
    
      # Admin GUI Postgres
      pgadmin:
        image: dpage/pgadmin4:latest
        container_name: pgadmin4_container
        ports:
          - "8888:80"
        environment:
          PGADMIN_DEFAULT_EMAIL: admin@abc.de
          PGADMIN_DEFAULT_PASSWORD: admin
        volumes:
          - ./sql/pgadmin-data:/var/lib/pgadmin
    
      # Infrakstruktur zum Publishen und Streamen von CDM Daten
      mosquitto:
        container_name: mos1
        image: eclipse-mosquitto
        ports:
          - 1883:1883
          - 9001:9001
          - 8883:8883
        volumes:
          - ./streaming/mosquitto.conf:/mosquitto/config/mosquitto.conf
          - ./streaming/log/mosquitto.log:/mosquitto/log/mosquitto.log     
    
      sub_neo4j:
        container_name: sub_neo4j
        image: sub_neo4j
        environment:
          - abort_time_limit=999999
          - neo4j_host=bolt://neo4j:7687 
          - mos_host=mos1
          - mos_port=1883
        depends_on:
          neo4j:
            condition: service_healthy
            restart: true
        # command: ["dockerize", "-wait", "http://neo4j:7474", "python sub_neo4j_cdm.py"]
        restart: on-failure
        # healthcheck:
        #   test: ["CMD", "curl", "-f", "http://neo4j:7474"]
        #   interval: 30s
        #   timeout: 10s
        #   retries: 20
    
      pub: 
        container_name: pub_cdm
        image: pub_cdm
        environment:
          - chunk_size_insert=1000
          - number_of_insertions=100
          - path_to_firstK=/var/lib/import/first1k.json
          - path_data=/var/lib/import/
        volumes: 
          - ./streaming/clients/pub/data:/var/lib/import
        restart: unless-stopped
        depends_on: 
          - sub_neo4j
            # condition: service_healthy
            # restart: true
    
        # command: ["dockerize", "-wait", "http://neo4j:7474", "ls"]
        
    
    volumes:
      postgres:
    
      pgadmin:
    
      prometheus-data:
        driver: local
    
      neo4j:
    
    networks:
      postgres:
        external: true
      # mosquitto:
      #   name: mosquitto
      #   driver: bridge
      #   external: true