services:
  backend:
    container_name: "PHANTOM-backend"
    build:
      context: .
      dockerfile: docker/backend.Dockerfile
    ports:
      - "${BACKEND_PORT:-5000}:5000"
    environment:
      - KAFKA_HOST=kafka
      - KAFKA_PORT=29092
    depends_on:
      - kafka
    restart: unless-stopped

  redis:
    container_name: "PHANTOM-redis"
    build:
      context: ./docker
      dockerfile: Redis.dockerfile
    ports:
      - "${REDIS_PORT:-6378}:6379"
    volumes:
      - phantom_redis_data:/data
    restart: unless-stopped

  zookeeper:
    container_name: "PHANTOM-zookeeper"
    build:
      context: ./docker
      dockerfile: Zookeeper.dockerfile
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
    ports:
      - "2181:2181"

  kafka:
    container_name: "PHANTOM-kafka"
    build:
      context: ./docker
      dockerfile: Kafka.dockerfile
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:29092,PLAINTEXT_HOST://0.0.0.0:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
    ports:
      - "${KAFKA_PORT:-9092}:9092"
    volumes:
      - phantom_kafka_data:/var/lib/kafka/data

  redpanda-console:
    container_name: "PHANTOM-redpanda-console"
    build:
      context: ./docker
      dockerfile: RedpandaConsole.dockerfile
    depends_on:
      - kafka
    environment:
      KAFKA_BROKERS: kafka:29092
    ports:
      - "${REDPANDA_CONSOLE_PORT:-8080}:8080"
    restart: unless-stopped

volumes:
  phantom_kafka_data:
  phantom_redis_data:
