version: '3.5' services: # Handle the coordination between the kafka images zookeeper: image: strimzi/kafka:0.19.0-kafka-2.5.0 command: [ "sh", "-c", "bin/zookeeper-server-start.sh config/zookeeper.properties" ] ports: - "2181:2181" environment: LOG_DIR: /tmp/logs networks: - kafka # The event system kafka: image: strimzi/kafka:0.19.0-kafka-2.5.0 command: [ "sh", "-c", "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT} --override num.partitions=$${KAFKA_NUM_PARTITIONS} --override group.min.session.timeout.ms=$${KAFKA_GROUP_MIN_SESSION_TIMEOUT_MS}" ] depends_on: - zookeeper ports: - "9092:9092" environment: LOG_DIR: "/tmp/logs" KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_NUM_PARTITIONS: 3 KAFKA_GROUP_MIN_SESSION_TIMEOUT_MS: 100 networks: - kafka # Producer to a Kafka cluster producer: image: quarkus-quickstarts/kafka-streams-producer:1.0 build: context: producer dockerfile: src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} environment: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 networks: - kafka # Aggregator to a Kafka cluster aggregator: image: quarkus-quickstarts/kafka-streams-aggregator:1.0 build: context: aggregator dockerfile: src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} environment: QUARKUS_KAFKA_STREAMS_BOOTSTRAP_SERVERS: kafka:9092 networks: - kafka # Our application application: build: context: . dockerfile: ./src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} environment: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 depends_on: - zookeeper - kafka - producer - aggregator networks: - kafka networks: # the Kafka network kafka: name: kafka