Healthcheck und Depends-On für die KRAFT-Konfig
[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     healthcheck:
38       test: [ "CMD", "kafka-topics.sh", "--bootstrap-server", ":9092", "--list" ]
39
40   kafka-2:
41     image: bitnami/kafka:3.3.1
42     environment:
43       KAFKA_ENABLE_KRAFT: 'yes'
44       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
45       KAFKA_CFG_PROCESS_ROLES: broker
46       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
47       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9082
48       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, CONTROLLER:PLAINTEXT, LOCALHOST:PLAINTEXT
49       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-2:9092, LOCALHOST://localhost:9082
50       KAFKA_BROKER_ID: 2
51       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
52       ALLOW_PLAINTEXT_LISTENER: 'yes'
53       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
54       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
55       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
56     ports:
57       - 9092:9082
58       - 9082:9082
59     networks:
60       default:
61         aliases:
62           - kafka
63     healthcheck:
64       test: [ "CMD", "kafka-topics.sh", "--bootstrap-server", ":9092", "--list" ]
65
66   kafka-3:
67     image: bitnami/kafka:3.3.1
68     environment:
69       KAFKA_ENABLE_KRAFT: 'yes'
70       KAFKA_KRAFT_CLUSTER_ID: r7dMBY60T16TrNCGeXniLw
71       KAFKA_CFG_PROCESS_ROLES: broker
72       KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
73       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9083
74       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, CONTROLLER:PLAINTEXT, LOCALHOST:PLAINTEXT
75       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-3:9092, LOCALHOST://localhost:9083
76       KAFKA_BROKER_ID: 3
77       KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-0:9092
78       ALLOW_PLAINTEXT_LISTENER: 'yes'
79       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
80       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
81       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
82     ports:
83       - 9083:9083
84     healthcheck:
85       test: [ "CMD", "kafka-topics.sh", "--bootstrap-server", ":9092", "--list" ]
86
87   setup:
88     image: juplo/toolbox
89     command: >
90       bash -c "
91         kafka-topics --bootstrap-server kafka:9092 --delete --if-exists --topic test
92         kafka-topics --bootstrap-server kafka:9092 --create --topic test --partitions 2 --replication-factor 3 --config min.insync.replicas=2
93         kafka-topics --bootstrap-server kafka:9092 --describe --topic test
94       "
95     depends_on:
96       kafka-1:
97         condition: service_healthy
98       kafka-2:
99         condition: service_healthy
100       kafka-3:
101         condition: service_healthy
102
103   cli:
104     image: juplo/toolbox
105     command: sleep infinity
106
107   producer:
108     image: juplo/simple-producer:1.0-SNAPSHOT
109     command: producer
110     depends_on:
111       kafka-1:
112         condition: service_healthy
113       kafka-2:
114         condition: service_healthy
115       kafka-3:
116         condition: service_healthy
117
118   consumer-1:
119     image: juplo/simple-consumer:1.0-SNAPSHOT
120     command: kafka:9092 test my-group consumer-1
121     depends_on:
122       kafka-1:
123         condition: service_healthy
124       kafka-2:
125         condition: service_healthy
126       kafka-3:
127         condition: service_healthy
128
129   consumer-2:
130     image: juplo/simple-consumer:1.0-SNAPSHOT
131     command: kafka:9092 test my-group consumer-2
132     depends_on:
133       kafka-1:
134         condition: service_healthy
135       kafka-2:
136         condition: service_healthy
137       kafka-3:
138         condition: service_healthy
139
140   consumer-3:
141     image: juplo/simple-consumer:1.0-SNAPSHOT
142     command: kafka:9092 test my-group consumer-3
143     depends_on:
144       kafka-1:
145         condition: service_healthy
146       kafka-2:
147         condition: service_healthy
148       kafka-3:
149         condition: service_healthy
150
151   spikzettel:
152     image: juplo/toolbox
153     command: >
154       bash -c '
155         kafka-console-consumer \
156           --bootstrap-server kafka:9092 \
157           --topic __consumer_offsets --from-beginning \
158           --formatter "kafka.coordinator.group.GroupMetadataManager\$$OffsetsMessageFormatter"
159       '
160     depends_on:
161       kafka-1:
162         condition: service_healthy
163       kafka-2:
164         condition: service_healthy
165       kafka-3:
166         condition: service_healthy