Grace-Period für Broker und cli/setup gesetzt
[demos/kafka/training] / docker / docker-compose.yml
1 version: '3.2'
2 services:
3   zookeeper:
4     image: confluentinc/cp-zookeeper:7.5.1
5     environment:
6       ZOOKEEPER_CLIENT_PORT: 2181
7     ports:
8       - 2181:2181
9     volumes:
10       - zookeeper-data:/var/lib/zookeeper/data
11       - zookeeper-log:/var/lib/zookeeper/log
12
13   kafka-1:
14     image: confluentinc/cp-kafka:7.5.1
15     environment:
16       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
17       KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9081
18       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
19       KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-1:9092, LOCALHOST://localhost:9081
20       KAFKA_BROKER_ID: 1
21       KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
22       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
23       KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
24     volumes:
25       - kafka-1-data:/var/lib/kafka/data
26     ports:
27       - 9081:9081
28     stop_grace_period: 120s
29     depends_on:
30       - zookeeper
31
32   kafka-2:
33     image: confluentinc/cp-kafka:7.5.1
34     environment:
35       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
36       KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9082
37       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
38       KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-2:9092, LOCALHOST://localhost:9082
39       KAFKA_BROKER_ID: 2
40       KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
41       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
42       KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
43     volumes:
44       - kafka-2-data:/var/lib/kafka/data
45     ports:
46       - 9092:9082
47       - 9082:9082
48     networks:
49       default:
50         aliases:
51           - kafka
52     stop_grace_period: 120s
53     depends_on:
54       - zookeeper
55
56   kafka-3:
57     image: confluentinc/cp-kafka:7.5.1
58     environment:
59       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
60       KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9083
61       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
62       KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-3:9092, LOCALHOST://localhost:9083
63       KAFKA_BROKER_ID: 3
64       KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
65       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
66       KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
67     volumes:
68       - kafka-3-data:/var/lib/kafka/data
69     ports:
70       - 9083:9083
71     stop_grace_period: 120s
72     depends_on:
73       - zookeeper
74
75   schema-registry:
76     image: confluentinc/cp-schema-registry:7.5.1
77     environment:
78       SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka-1:9092,kafka-2:9092,kafka-3:9092
79       SCHEMA_REGISTRY_HOST_NAME: schema-registry
80       SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8085
81       SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
82     ports:
83       - 8085:8085
84     depends_on:
85       - kafka-1
86       - kafka-2
87       - kafka-3
88
89   connect:
90     image: confluentinc/cp-kafka-connect:7.5.1
91     environment:
92       CONNECT_BOOTSTRAP_SERVERS: kafka-1:9092,kafka-2:9092,kafka-3:9092
93       CONNECT_REST_PORT: 8083
94       CONNECT_REST_LISTENERS: http://0.0.0.0:8083
95       CONNECT_REST_ADVERTISED_HOST_NAME: connect
96       CONNECT_CONFIG_STORAGE_TOPIC: __connect-config
97       CONNECT_OFFSET_STORAGE_TOPIC: __connect-offsets
98       CONNECT_STATUS_STORAGE_TOPIC: __connect-status
99       CONNECT_GROUP_ID: kafka-connect
100       CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE: "true"
101       CONNECT_KEY_CONVERTER: io.confluent.connect.avro.AvroConverter
102       CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8085
103       CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE: "true"
104       CONNECT_VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter
105       CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8085
106       CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
107       CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
108       CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
109       CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
110       CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
111       CONNECT_PLUGIN_PATH: /usr/share/java/
112     ports:
113       - 8083:8083
114     depends_on:
115       - schema-registry
116
117   setup:
118     image: juplo/toolbox
119     command:
120       - bash
121       - -c
122       - |
123         if [ -e INITIALIZED ]
124         then
125           echo -n Bereits konfiguriert: 
126           cat INITIALIZED
127           kafka-topics --bootstrap-server kafka:9092 --describe --topic test
128         else
129           kafka-topics --bootstrap-server kafka:9092 \
130                        --delete \
131                        --if-exists \
132                        --topic test
133           kafka-topics --bootstrap-server kafka:9092 \
134                        --create \
135                        --topic test \
136                        --partitions 2 \
137                        --replication-factor 3 \
138                        --config min.insync.replicas=2 \
139           && echo Das Topic \'test\' wurde erfolgreich angelegt: \
140           && kafka-topics --bootstrap-server kafka:9092 --describe --topic test \
141           && date > INITIALIZED
142         fi
143     stop_grace_period: 0s
144     depends_on:
145       - kafka-1
146       - kafka-2
147       - kafka-3
148
149   akhq:
150     image: tchiotludo/akhq:0.23.0
151     ports:
152       - 8888:8080
153     environment:
154       AKHQ_CONFIGURATION: |
155         akhq:
156           connections:
157             docker-kafka-server:
158               properties:
159                 bootstrap.servers: "kafka:9092"
160               schema-registry:
161                 url: "http://schema-registry:8085"
162               connect:
163                 - name: "connect"
164                   url: "http://connect:8083"
165     depends_on:
166       - kafka-1
167       - kafka-2
168       - kafka-3
169
170   cli:
171     image: juplo/toolbox
172     command: sleep infinity
173     stop_grace_period: 0s
174     depends_on:
175       - setup
176
177 volumes:
178   zookeeper-data:
179   zookeeper-log:
180   kafka-1-data:
181   kafka-2-data:
182   kafka-3-data: