Compose-Setup auf KRAFT mit bitnami-Images umgestellt
[demos/kafka/training] / docker-compose.yml
1 version: '3.2'
2 services:
3   kafka-0:
4     image: bitnami/kafka:3.3.1
5     environment:
6       KAFKA_ENABLE_KRAFT: 'yes'
7       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
8       KAFKA_CFG_PROCESS_ROLES: controller
9       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
10       KAFKA_CFG_LISTENERS: CONTROLLER://:9092
11       KAFKA_CFG_ADVERTISED_LISTENERS: " "
12       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT
13       KAFKA_BROKER_ID: 0
14       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
15       ALLOW_PLAINTEXT_LISTENER: 'yes'
16       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
17       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
18
19   kafka-1:
20     image: bitnami/kafka:3.3.1
21     environment:
22       KAFKA_ENABLE_KRAFT: 'yes'
23       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
24       KAFKA_CFG_PROCESS_ROLES: broker
25       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
26       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9081
27       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, CONTROLLER:PLAINTEXT, LOCALHOST:PLAINTEXT
28       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-1:9092, LOCALHOST://localhost:9081
29       KAFKA_BROKER_ID: 1
30       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
31       ALLOW_PLAINTEXT_LISTENER: 'yes'
32       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
33       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
34       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
35     ports:
36       - 9081:9081
37
38   kafka-2:
39     image: bitnami/kafka:3.3.1
40     environment:
41       KAFKA_ENABLE_KRAFT: 'yes'
42       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
43       KAFKA_CFG_PROCESS_ROLES: broker
44       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
45       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9082
46       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, CONTROLLER:PLAINTEXT, LOCALHOST:PLAINTEXT
47       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-2:9092, LOCALHOST://localhost:9082
48       KAFKA_BROKER_ID: 2
49       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
50       ALLOW_PLAINTEXT_LISTENER: 'yes'
51       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
52       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
53       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
54     ports:
55       - 9092:9082
56       - 9082:9082
57     networks:
58       default:
59         aliases:
60           - kafka
61
62   kafka-3:
63     image: bitnami/kafka:3.3.1
64     environment:
65       KAFKA_ENABLE_KRAFT: 'yes'
66       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
67       KAFKA_CFG_PROCESS_ROLES: broker
68       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
69       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9083
70       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, CONTROLLER:PLAINTEXT, LOCALHOST:PLAINTEXT
71       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-3:9092, LOCALHOST://localhost:9083
72       KAFKA_BROKER_ID: 3
73       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
74       ALLOW_PLAINTEXT_LISTENER: 'yes'
75       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
76       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
77       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
78     ports:
79       - 9083:9083
80
81   setup:
82     image: juplo/toolbox
83     command: >
84       bash -c "
85         kafka-topics --bootstrap-server kafka:9092 --delete --if-exists --topic test
86         kafka-topics --bootstrap-server kafka:9092 --create --topic test --partitions 2 --replication-factor 3 --config min.insync.replicas=2
87         kafka-topics --bootstrap-server kafka:9092 --describe --topic test
88       "
89
90   cli:
91     image: juplo/toolbox
92     command: sleep infinity
93
94   producer-0:
95     image: juplo/rest-producer:1.0-SNAPSHOT
96     ports:
97       - 8000:8080
98     environment:
99       server.port: 8080
100       producer.bootstrap-server: kafka:9092
101       producer.client-id: producer
102       producer.topic: test
103       producer.partition: 0
104
105   producer-1:
106     image: juplo/rest-producer:1.0-SNAPSHOT
107     ports:
108       - 8001:8080
109     environment:
110       server.port: 8080
111       producer.bootstrap-server: kafka:9092
112       producer.client-id: producer
113       producer.topic: test
114       producer.partition: 1
115
116   peter:
117     image: juplo/rest-client:1.0-SNAPSHOT
118     environment:
119       server.port: 8080
120       rest-client.baseUrl: http://producer-1:8080
121       rest-client.username: peter
122       rest-client.throttle-ms: 1000
123
124   klaus:
125     image: juplo/rest-client:1.0-SNAPSHOT
126     environment:
127       server.port: 8080
128       rest-client.baseUrl: http://producer-1:8080
129       rest-client.username: klaus
130       rest-client.throttle-ms: 1100
131
132   beate:
133     image: juplo/rest-client:1.0-SNAPSHOT
134     environment:
135       server.port: 8080
136       rest-client.baseUrl: http://producer-0:8080
137       rest-client.username: beate
138       rest-client.throttle-ms: 900
139
140   franz:
141     image: juplo/rest-client:1.0-SNAPSHOT
142     environment:
143       server.port: 8080
144       rest-client.baseUrl: http://producer-1:8080
145       rest-client.username: franz
146       rest-client.throttle-ms: 800
147
148   uschi:
149     image: juplo/rest-client:1.0-SNAPSHOT
150     environment:
151       server.port: 8080
152       rest-client.baseUrl: http://producer-0:8080
153       rest-client.username: uschi
154       rest-client.throttle-ms: 1200
155
156   consumer:
157     image: juplo/toolbox
158     command: kafkacat -C -b kafka:9092 -t test -o 0 -f'p=%p|o=%o|k=%k|v=%s\n'