services: zoo1: image: confluentinc/cp-zookeeper:7.3.2 hostname: zoo1 container_name: zoo1 ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVER_ID: 1 ZOOKEEPER_SERVERS: zoo1:2888:3888 networks: - kafka-net kafka1: image: confluentinc/cp-kafka:7.3.2 hostname: kafka1 container_name: kafka1 ports: - "127.0.0.1:9092:9092" # exposed ONLY to host localhost environment: KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181" KAFKA_BROKER_ID: 1 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 depends_on: - zoo1 networks: - kafka-net kafka-ui: container_name: kafka-ui image: provectuslabs/kafka-ui:latest ports: - 8087:8080 environment: DYNAMIC_CONFIG_ENABLED: true volumes: - /Users/rishi/work/config/kafka-ui/config.yml:/etc/kafkaui/dynamic_config.yaml depends_on: - kafka1 - zoo1 networks: - kafka-net db: image: "mongo:latest" container_name: database networks: - kafka-net ports: - "27017:27017" volumes: - "mongodb_data:/bitnami/mongodb" redis: image: "bitnami/redis:latest" container_name: queue environment: ALLOW_EMPTY_PASSWORD: "yes" networks: - kafka-net ports: - "6379:6379" elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2 container_name: elasticsearch environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "xpack.security.enabled=true" - "xpack.security.authc.api_key.enabled=true" - "ELASTIC_PASSWORD=password" ulimits: memlock: soft: -1 hard: -1 ports: - "9200:9200" networks: - kafka-net networks: kafka-net: driver: bridge volumes: mongodb_data: driver: local elasticsearch: driver: local