version: '2'
services:
  logstash:
    build:
      context: logstash
      args:
        - MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY}
    ports:
      - "4501:4501/udp"
      - "8080:8080/tcp"
    command: -f /etc/logstash/conf.d/
    volumes:
      - ./logstash/config:/etc/logstash/conf.d
      - ./logstash/templates:/tmp/templates
    links:
      - elasticsearch
    depends_on:
      - elasticsearch
  elasticsearch:
    image: elasticsearch:8.14.1
    environment:
      - xpack.security.enabled=false
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1000m -Xmx1000m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
  regression:
    cap_add:
      - ALL
    security_opt:
      - seccomp=unconfined
    environment:
      - SPAMHAUS_KEY=${SPAMHAUS_KEY}
    build:
      context: weakforced
      dockerfile: docker/regression/Dockerfile
      args:
        - MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY}
    ports:
      - "18084:8084"
    volumes:
      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
      - ./tmp:/var/tmp/testlog
    links:
      - elasticsearch
      - logstash
    depends_on:
      - elasticsearch
      - logstash
      - kafka-rest
  # The following three images are for kafka regression testing
  zookeeper:
    image: confluentinc/cp-zookeeper:7.9.2
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    image: confluentinc/cp-kafka:7.9.2
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  kafka-rest:
    image: confluentinc/cp-kafka-rest:7.9.2
    ports:
      - 8082:8082
    environment:
      KAFKA_REST_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_REST_LISTENERS: http://0.0.0.0:8082
      KAFKA_REST_HOST_NAME: localhost
      KAFKA_REST_BOOTSTRAP_SERVERS: kafka:29092
    depends_on:
      - zookeeper
      - kafka

  redis:
    image: redis:latest
    ports:
      - 6380:6379
    volumes:
      - ./redis/conf:/usr/local/etc/redis
    command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

volumes:
  esdata:
    driver: local
