-version: '3.2'
services:
- zookeeper:
- image: confluentinc/cp-zookeeper:6.2.0
- environment:
- ZOOKEEPER_CLIENT_PORT: 2181
- ports:
- - 2181:2181
kafka:
- image: confluentinc/cp-kafka:6.2.0
+ image: confluentinc/cp-kafka:7.5.1
environment:
- KAFKA_BROKER_ID: 1
- KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
- KAFKA_LISTENERS: DOCKER://:9092, LOCALHOST://:9082
+ KAFKA_NODE_ID: 1
+ KAFKA_LISTENERS: CONTROLLER://:9072, DOCKER://:9092, LOCALHOST://:9082
KAFKA_ADVERTISED_LISTENERS: DOCKER://kafka:9092, LOCALHOST://localhost:9082
KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: DOCKER:PLAINTEXT, LOCALHOST:PLAINTEXT
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT, DOCKER:PLAINTEXT, LOCALHOST:PLAINTEXT
+ KAFKA_PROCESS_ROLES: broker, controller
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9072
+ KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
+ CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+ KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
+ KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
+ KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
ports:
- 9092:9082
- 9082:9082
- depends_on:
- - zookeeper
-
+ stop_grace_period: 120s
traefik:
image: "traefik:v2.5"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
recorder:
- image: juplo/wordcount--recorder:1.0.1
+ image: juplo/wordcount--recorder:1.1.1
labels:
- "traefik.enable=true"
- "traefik.http.routers.recorder.rule=Host(`recorder.localhost`)"
- kafka
users:
- image: juplo/wordcount--users:1.0.4
+ image: juplo/wordcount--users:1.0.5
labels:
- "traefik.enable=true"
- "traefik.http.routers.users.rule=Host(`users.localhost`)"
depends_on:
- kafka
+ splitter:
+ image: juplo/wordcount--splitter:1.1.5
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.routers.splitter.rule=Host(`splitter.localhost`)"
+ - "traefik.http.routers.splitter.entrypoints=web"
+ environment:
+ juplo.wordcount.splitter.bootstrap-server: kafka:9092
+ depends_on:
+ - kafka
+
counter:
- image: juplo/wordcount--counter:1.0.1
+ image: juplo/wordcount--counter:1.2.5
labels:
- "traefik.enable=true"
- "traefik.http.routers.counter.rule=Host(`counter.localhost`)"
- kafka
top10:
- image: juplo/wordcount--top10:1.0.1
+ image: juplo/wordcount--top10:1.0.2
labels:
- "traefik.enable=true"
- "traefik.http.routers.top10.rule=Host(`top10.localhost`)"
- kafka
query:
- image: juplo/wordcount--query:1.0.4
+ image: juplo/wordcount--query:1.0.5
labels:
- "traefik.enable=true"
- "traefik.http.routers.query.rule=Host(`query.localhost`)"
image: juplo/toolbox
command: bash -c "
cub kafka-ready -b kafka:9092 1 60 ;
- kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic recordings ;
- kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic users ;
- kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic countings ;
- kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic top10 ;
+ kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic recordings ;
+ kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic users ;
+ kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic words ;
+ kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic countings ;
+ kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic top10 ;
sleep infinity"
akhq:
docker-kafka-server:
properties:
bootstrap.servers: "kafka:9092"
-
-networks:
- default:
- external:
- name: trion