4 image: confluentinc/cp-kafka:7.5.1
7 KAFKA_LISTENERS: CONTROLLER://:9072, DOCKER://:9092, LOCALHOST://:9082
8 KAFKA_ADVERTISED_LISTENERS: DOCKER://kafka:9092, LOCALHOST://localhost:9082
9 KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER
10 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT, DOCKER:PLAINTEXT, LOCALHOST:PLAINTEXT
11 KAFKA_PROCESS_ROLES: broker, controller
12 KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9072
13 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
14 CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
15 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
16 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
17 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
18 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
19 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
23 stop_grace_period: 120s
28 #- "--log.level=DEBUG"
29 - "--api.insecure=true"
30 - "--providers.docker=true"
31 - "--providers.docker.exposedbydefault=false"
32 - "--entrypoints.web.address=:80"
37 - "/var/run/docker.sock:/var/run/docker.sock:ro"
40 image: juplo/wordcount--recorder:1.0.1
42 - "traefik.enable=true"
43 - "traefik.http.routers.recorder.rule=Host(`recorder.localhost`)"
44 - "traefik.http.routers.recorder.entrypoints=web"
46 juplo.wordcount.recorder.bootstrap-server: kafka:9092
51 image: juplo/wordcount--users:1.0.4
53 - "traefik.enable=true"
54 - "traefik.http.routers.users.rule=Host(`users.localhost`)"
55 - "traefik.http.routers.users.entrypoints=web"
57 juplo.wordcount.users.bootstrap-server: kafka:9092
62 image: juplo/wordcount--splitter:1.0.0
64 - "traefik.enable=true"
65 - "traefik.http.routers.splitter.rule=Host(`splitter.localhost`)"
66 - "traefik.http.routers.splitter.entrypoints=web"
68 juplo.wordcount.splitter.bootstrap-server: kafka:9092
73 image: juplo/wordcount--counter:1.1.0
75 - "traefik.enable=true"
76 - "traefik.http.routers.counter.rule=Host(`counter.localhost`)"
77 - "traefik.http.routers.counter.entrypoints=web"
79 juplo.wordcount.counter.bootstrap-server: kafka:9092
84 image: juplo/wordcount--top10:1.0.1
86 - "traefik.enable=true"
87 - "traefik.http.routers.top10.rule=Host(`top10.localhost`)"
88 - "traefik.http.routers.top10.entrypoints=web"
90 juplo.wordcount.top10.bootstrap-server: kafka:9092
95 image: juplo/wordcount--query:1.0.4
97 - "traefik.enable=true"
98 - "traefik.http.routers.query.rule=Host(`query.localhost`)"
99 - "traefik.http.routers.query.entrypoints=web"
101 juplo.wordcount.query.bootstrap-server: kafka:9092
106 image: juplo/wordcount--fortune:1.0.0
110 /usr/games/fortune chalkboard
112 | http -v recorder:8081/bart;
118 image: juplo/wordcount--fortune:1.0.0
122 /usr/games/fortune computers
123 | grep -v '^[[:space:]]*--'
124 | http -v recorder:8081/nerd;
130 image: juplo/wordcount--fortune:1.0.0
134 /usr/games/fortune riddles
135 | awk -F':' '/^Q/ { print $$2 }'
136 | http -v recorder:8081/riddler;
144 cub kafka-ready -b kafka:9092 1 60 ;
145 kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic recordings ;
146 kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic users ;
147 kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic words ;
148 kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic countings ;
149 kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --if-not-exists --topic top10 ;
153 image: tchiotludo/akhq:0.18.0
155 - "traefik.enable=true"
156 - "traefik.http.routers.akhq.rule=Host(`akhq.localhost`)"
157 - "traefik.http.routers.akhq.entrypoints=web"
161 AKHQ_CONFIGURATION: |
166 bootstrap.servers: "kafka:9092"