forked from nandak522/kraft
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
147 lines (139 loc) · 5 KB
/
docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
services:
kafka-base:
build:
context: kafka
dockerfile: Dockerfile
image: local/kafka-base:v3.5.0
kafka1:
container_name: kafka1
image: local/kafka-base:v3.5.0
command: [ "sh", "-c", "/opt/kafka/bin/custom-start.sh" ]
environment:
# Below UUID is generated from https://uuid.rocks/short
CLUSTER_ID: ${CLUSTER_ID:-bPpdXy8F6e7P49b2LCPH69}
CUSTOM_NODE_ID: 1
CUSTOM_LOG_DIRS: "/opt/kafka-kraft-data"
CUSTOM_LISTENERS: "BROKER://:19092,CONTROLLER://:19093"
CUSTOM_ROLES: "broker,controller"
CUSTOM_CONTROLLER_QUORUM_VOTERS: "1@kafka1:19093,2@kafka2:29093,3@kafka3:39093"
CUSTOM_INTER_BROKER_LISTENER_NAME: "BROKER"
JMX_PORT: 19999
KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
KAFKA_OPTS: "-javaagent:/opt/kafka/jmx_prometheus_javaagent.jar=17071:/opt/kafka/jmx-prom-java-agent-config.yaml"
ports:
- 18092:18092
- 19092:19092
- 17071:17071
expose:
- "18092"
- "19092"
- "17071"
kafka2:
container_name: kafka2
image: local/kafka-base:v3.5.0
command: [ "sh", "-c", "/opt/kafka/bin/custom-start.sh" ]
environment:
# Below UUID is generated from https://uuid.rocks/short
CLUSTER_ID: ${CLUSTER_ID:-bPpdXy8F6e7P49b2LCPH69}
CUSTOM_NODE_ID: 2
CUSTOM_LOG_DIRS: "/opt/kafka-kraft-data"
CUSTOM_LISTENERS: "BROKER://:29092,CONTROLLER://:29093"
CUSTOM_ROLES: "broker,controller"
CUSTOM_CONTROLLER_QUORUM_VOTERS: "1@kafka1:19093,2@kafka2:29093,3@kafka3:39093"
CUSTOM_INTER_BROKER_LISTENER_NAME: "BROKER"
JMX_PORT: 29999
KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
KAFKA_OPTS: "-javaagent:/opt/kafka/jmx_prometheus_javaagent.jar=27071:/opt/kafka/jmx-prom-java-agent-config.yaml"
ports:
- 28092:28092
- 29092:29092
- 27071:27071
expose:
- "28092"
- "29092"
- "27071"
kafka3:
container_name: kafka3
image: local/kafka-base:v3.5.0
command: [ "sh", "-c", "/opt/kafka/bin/custom-start.sh" ]
environment:
# Below UUID is generated from https://uuid.rocks/short
CLUSTER_ID: ${CLUSTER_ID:-bPpdXy8F6e7P49b2LCPH69}
CUSTOM_NODE_ID: 3
CUSTOM_LOG_DIRS: "/opt/kafka-kraft-data"
CUSTOM_LISTENERS: "BROKER://:39092,CONTROLLER://:39093"
CUSTOM_ROLES: "broker,controller"
CUSTOM_CONTROLLER_QUORUM_VOTERS: "1@kafka1:19093,2@kafka2:29093,3@kafka3:39093"
CUSTOM_INTER_BROKER_LISTENER_NAME: "BROKER"
JMX_PORT: 39999
KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
KAFKA_OPTS: "-javaagent:/opt/kafka/jmx_prometheus_javaagent.jar=37071:/opt/kafka/jmx-prom-java-agent-config.yaml"
ports:
- 38092:38092
- 39092:39092
- 37071:37071
expose:
- "38092"
- "39092"
- "37071"
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:v0.7.1
ports:
- 8080:8080
depends_on:
- kafka1
- schema-registry
environment:
KAFKA_CLUSTERS_0_NAME: kraft
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: "kafka1:19092,kafka2:29092,kafka3:39092"
KAFKA_CLUSTERS_0_METRICS_PORT: 19999
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8081
DYNAMIC_CONFIG_ENABLED: 'true' # not necessary, added for tests
KAFKA_CLUSTERS_0_AUDIT_TOPICAUDITENABLED: 'true'
KAFKA_CLUSTERS_0_AUDIT_CONSOLEAUDITENABLED: 'true'
schema-registry:
image: confluentinc/cp-schema-registry:7.4.0
hostname: schema-registry
container_name: schema-registry
depends_on:
- kafka1
- kafka2
- kafka3
ports:
- "8081:8081"
environment:
SCHEMA_REGISTRY_HOST_NAME: schema-registry
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'kafka1:19092,kafka2:29092,kafka3:39092'
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
kafka-client:
build:
context: clients
dockerfile: Dockerfile
image: local/kafka-client:v2.1.1
producer:
image: local/kafka-client:v2.1.1
container_name: kafka-producer
volumes:
- ./clients/producer.py:/app/producer.py:ro
- ./clients/protobuf:/app/protobuf:ro
environment:
BROKERS: 'kafka1:19092,kafka2:29092,kafka3:39092'
TOPIC: test
SCHEMA_REGISTRY_HOST: 'http://schema-registry:8081'
MESSAGES_COUNT: '500'
depends_on:
- schema-registry
command: [ "sh", "-c", "python3 /app/producer.py" ]
consumer:
image: local/kafka-client:v2.1.1
container_name: kafka-consumer
volumes:
- ./clients/consumer.py:/app/consumer.py
- ./clients/protobuf:/app/protobuf
environment:
BROKERS: 'kafka1:19092,kafka2:29092,kafka3:39092'
TOPIC: test
CONSUMER_GROUP: test
CONSUMER_INSTANCE_ID: 1
command: [ "sh", "-c", "python3 /app/consumer.py" ]