1
+ ---
1
2
version : " 3.8"
2
3
services :
3
-
4
4
zookeeper :
5
5
image : confluentinc/cp-zookeeper:7.5.0
6
- container_name : zookeeper- streaming
6
+ container_name : streaming-zookeeper
7
7
ports :
8
8
- " 2181:2181"
9
9
healthcheck :
10
10
test : echo srvr | nc zookeeper 2181 || exit 1
11
- interval : 10s
12
- retries : 20
13
11
start_period : 10s
12
+ retries : 20
13
+ interval : 10s
14
14
environment :
15
15
ZOOKEEPER_CLIENT_PORT : 2181
16
16
ZOOKEEPER_TICK_TIME : 2000
17
-
17
+
18
+ # Kafka broker, all configurations you can take a look
19
+ # at https://docs.confluent.io/platform/current/installation/docker/config-reference.html
18
20
broker :
19
21
image : confluentinc/cp-server:7.5.0
20
- container_name : broker- streaming
22
+ container_name : streaming-broker
21
23
depends_on :
22
24
zookeeper :
23
25
condition : service_healthy
@@ -31,20 +33,29 @@ services:
31
33
timeout : 10s
32
34
retries : 10
33
35
environment :
34
- KAFKA_BROKER_ID : 1
35
- KAFKA_ZOOKEEPER_CONNECT : ' zookeeper:2181'
36
+ # ID of the broker in a cluster
37
+ KAFKA_BROKER_ID :
38
+ 1
39
+ # Connect to Zoo Keeper for distributed coordination and leader election
40
+ KAFKA_ZOOKEEPER_CONNECT : " zookeeper:2181"
36
41
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP : PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
42
+ # Define how clients connect to brokers
37
43
KAFKA_ADVERTISED_LISTENERS : PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
44
+ # How many copies are maintained for fault tolerance
38
45
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR : 1
46
+ # Schema Registry URL for storing and managing Avro schemas
39
47
KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL : http://schema-registry:8081
48
+ # Confluent Metrics Reporter for Control Center Cluster Monitoring
40
49
KAFKA_METRIC_REPORTERS : io.confluent.metrics.reporter.ConfluentMetricsReporter
41
50
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS : " broker:9092"
42
51
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS : 1
43
52
CONFLUENT_METRICS_ENABLE : " true"
53
+ # For fixing the bug replication factor 3 > the number of node
44
54
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR : 1
45
55
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR : 1
46
56
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR : 1
47
57
58
+ # For managing Avro schemas
48
59
schema-registry :
49
60
image : confluentinc/cp-schema-registry:7.5.0
50
61
container_name : streaming-schema-registry
@@ -62,42 +73,8 @@ services:
62
73
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS : " broker:29092"
63
74
SCHEMA_REGISTRY_LISTENERS : http://0.0.0.0:8081
64
75
65
- connect :
66
- image : confluentinc/cp-kafka-connect:7.5.0
67
- container_name : streaming-connect
68
- depends_on :
69
- broker :
70
- condition : service_healthy
71
- schema-registry :
72
- condition : service_healthy
73
- zookeeper :
74
- condition : service_healthy
75
- ports :
76
- - " 8083:8083"
77
- environment :
78
- CONNECT_BOOTSTRAP_SERVERS : " broker:29092"
79
- CONNECT_REST_ADVERTISED_HOST_NAME : connect
80
- CONNECT_REST_PORT : 8083
81
- CONNECT_GROUP_ID : compose-connect-group
82
- CONNECT_CONFIG_STORAGE_TOPIC : docker-connect-configs
83
- CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR : 1
84
- CONNECT_OFFSET_FLUSH_INTERVAL_MS : 10000
85
- CONNECT_OFFSET_STORAGE_TOPIC : docker-connect-offsets
86
- CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR : 1
87
- CONNECT_STATUS_STORAGE_TOPIC : docker-connect-status
88
- CONNECT_STATUS_STORAGE_REPLICATION_FACTOR : 1
89
- CONNECT_KEY_CONVERTER : org.apache.kafka.connect.storage.StringConverter
90
- CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE : false
91
- CONNECT_VALUE_CONVERTER : org.apache.kafka.connect.json.JsonConverter
92
- CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE : true
93
- # CONNECT_KEY_CONVERTER: io.confluent.connect.avro.AvroConverter
94
- # CONNECT_VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter
95
- # CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
96
- # CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
97
- CONNECT_PLUGIN_PATH : " /usr/share/java,/etc/kafka-connect/jars"
98
- volumes :
99
- - $PWD/data_ingestion/kafka_connect/jars/:/etc/kafka-connect/jars
100
76
77
+ # Confluent control center to manage Kafka
101
78
control-center :
102
79
image : confluentinc/cp-enterprise-control-center:7.5.0
103
80
container_name : streaming-control-center
@@ -121,6 +98,8 @@ services:
121
98
CONTROL_CENTER_CONNECT_HEALTHCHECK_ENDPOINT : " /connectors"
122
99
CONFLUENT_METRICS_TOPIC_REPLICATION : 1
123
100
101
+ # CDC platform to capture changes in DB
102
+ # and stream them to Kafka
124
103
debezium :
125
104
image : debezium/connect:1.9
126
105
container_name : streaming-debezium
@@ -147,19 +126,22 @@ services:
147
126
timeout : 5s
148
127
retries : 5
149
128
ports :
150
- - " 8086 :8083"
129
+ - " 8083 :8083"
151
130
environment :
152
131
BOOTSTRAP_SERVERS : broker:29092
153
132
GROUP_ID : 1
154
133
CONFIG_STORAGE_TOPIC : connect_configs
155
134
OFFSET_STORAGE_TOPIC : connect_offsets
135
+ # Set to Avro for higher performance
136
+ # KEY_CONVERTER: io.confluent.connect.avro.AvroConverter
137
+ # VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter
156
138
KEY_CONVERTER : org.apache.kafka.connect.json.JsonConverter
157
139
VALUE_CONVERTER : org.apache.kafka.connect.json.JsonConverter
158
140
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL : http://schema-registry:8081
159
141
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL : http://schema-registry:8081
160
142
CONNECT_TOPIC_CREATION_ENABLE : true
161
143
162
-
144
+ # Debezium UI
163
145
debezium-ui :
164
146
image : debezium/debezium-ui:latest
165
147
container_name : debezium-ui
@@ -177,18 +159,18 @@ services:
177
159
command : ["postgres", "-c", "wal_level=logical"]
178
160
container_name : streaming-postgresql
179
161
healthcheck :
180
- test : ["CMD", "psql", "-U", "k6 ", "-c", "SELECT 1"]
162
+ test : ["CMD", "psql", "-U", "v9 ", "-c", "SELECT 1"]
181
163
interval : 10s
182
164
timeout : 5s
183
165
retries : 5
184
166
ports :
185
167
- " 5432:5432"
186
168
environment :
187
- - POSTGRES_DB=my_database
188
- - POSTGRES_USER=postgres
189
- - POSTGRES_PASSWORD=postgres
169
+ POSTGRES_DB : v9
170
+ POSTGRES_USER : v9
171
+ POSTGRES_PASSWORD : v9
190
172
volumes :
191
173
- cdc_postgres_data:/var/lib/postgresql/data
192
174
193
175
volumes :
194
- cdc_postgres_data :
176
+ cdc_postgres_data:
0 commit comments