Der Service `setup` wartet bereits auf den Cluster
[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         cub kafka-ready -b kafka-1:9092,kafka-2:9092,kafka-3:9092 3 60 > /dev/null 2>&1 || exit 1
124         if [ -e INITIALIZED ]
125         then
126           echo -n Bereits konfiguriert: 
127           cat INITIALIZED
128           kafka-topics --bootstrap-server kafka:9092 --describe --topic test
129         else
130           kafka-topics --bootstrap-server kafka:9092 \
131                        --delete \
132                        --if-exists \
133                        --topic test
134           kafka-topics --bootstrap-server kafka:9092 \
135                        --create \
136                        --topic test \
137                        --partitions 2 \
138                        --replication-factor 3 \
139                        --config min.insync.replicas=2 \
140           && echo Das Topic \'test\' wurde erfolgreich angelegt: \
141           && kafka-topics --bootstrap-server kafka:9092 --describe --topic test \
142           && date > INITIALIZED
143         fi
144     stop_grace_period: 0s
145     depends_on:
146       - kafka-1
147       - kafka-2
148       - kafka-3
149
150   akhq:
151     image: tchiotludo/akhq:0.23.0
152     ports:
153       - 8888:8080
154     environment:
155       AKHQ_CONFIGURATION: |
156         akhq:
157           connections:
158             docker-kafka-server:
159               properties:
160                 bootstrap.servers: "kafka:9092"
161               schema-registry:
162                 url: "http://schema-registry:8085"
163               connect:
164                 - name: "connect"
165                   url: "http://connect:8083"
166     depends_on:
167       - kafka-1
168       - kafka-2
169       - kafka-3
170
171   cli:
172     image: juplo/toolbox
173     command: sleep infinity
174     stop_grace_period: 0s
175     depends_on:
176       - setup
177
178 volumes:
179   zookeeper-data:
180   zookeeper-log:
181   kafka-1-data:
182   kafka-2-data:
183   kafka-3-data: