services: kafka: image: confluentinc/cp-kafka:7.8.0 container_name: pingg-kafka ports: - "9092:9092" - "29092:29092" environment: KAFKA_NODE_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT' KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092' KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_PROCESS_ROLES: 'broker,controller' KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093' KAFKA_LISTENERS: 'PLAINTEXT://0.0.0.0:29092,CONTROLLER://0.0.0.0:29093,PLAINTEXT_HOST://0.0.0.0:9092' KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT' KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER' KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs' CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk' healthcheck: test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "localhost:9092"] interval: 10s timeout: 10s retries: 5 kafka-ui: image: provectuslabs/kafka-ui:latest container_name: pingg-kafka-ui ports: - "8080:8080" environment: KAFKA_CLUSTERS_0_NAME: local-cluster KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 depends_on: kafka: condition: service_healthy notification-publisher: build: context: . dockerfile: notification-publisher/Dockerfile container_name: pingg-publisher ports: - "8081:8081" environment: SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:29092 SERVER_PORT: 8081 depends_on: kafka: condition: service_healthy notification-consumer: build: context: . dockerfile: notification-consumer/Dockerfile container_name: pingg-consumer ports: - "8082:8082" environment: SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:29092 SERVER_PORT: 8082 depends_on: kafka: condition: service_healthy