Skip to content

Commit 17ccfce

Browse files
Update stream docker compose
1 parent 158ed65 commit 17ccfce

File tree

2 files changed

+208
-50
lines changed

2 files changed

+208
-50
lines changed

kafka-docker-compose.yaml

+32-50
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1+
---
12
version: "3.8"
23
services:
3-
44
zookeeper:
55
image: confluentinc/cp-zookeeper:7.5.0
6-
container_name: zookeeper-streaming
6+
container_name: streaming-zookeeper
77
ports:
88
- "2181:2181"
99
healthcheck:
1010
test: echo srvr | nc zookeeper 2181 || exit 1
11-
interval: 10s
12-
retries: 20
1311
start_period: 10s
12+
retries: 20
13+
interval: 10s
1414
environment:
1515
ZOOKEEPER_CLIENT_PORT: 2181
1616
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
1820
broker:
1921
image: confluentinc/cp-server:7.5.0
20-
container_name: broker-streaming
22+
container_name: streaming-broker
2123
depends_on:
2224
zookeeper:
2325
condition: service_healthy
@@ -31,20 +33,29 @@ services:
3133
timeout: 10s
3234
retries: 10
3335
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"
3641
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
42+
# Define how clients connect to brokers
3743
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
44+
# How many copies are maintained for fault tolerance
3845
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
46+
# Schema Registry URL for storing and managing Avro schemas
3947
KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://schema-registry:8081
48+
# Confluent Metrics Reporter for Control Center Cluster Monitoring
4049
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
4150
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: "broker:9092"
4251
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
4352
CONFLUENT_METRICS_ENABLE: "true"
53+
# For fixing the bug replication factor 3 > the number of node
4454
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
4555
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
4656
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
4757

58+
# For managing Avro schemas
4859
schema-registry:
4960
image: confluentinc/cp-schema-registry:7.5.0
5061
container_name: streaming-schema-registry
@@ -62,42 +73,8 @@ services:
6273
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: "broker:29092"
6374
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
6475

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
10076

77+
# Confluent control center to manage Kafka
10178
control-center:
10279
image: confluentinc/cp-enterprise-control-center:7.5.0
10380
container_name: streaming-control-center
@@ -121,6 +98,8 @@ services:
12198
CONTROL_CENTER_CONNECT_HEALTHCHECK_ENDPOINT: "/connectors"
12299
CONFLUENT_METRICS_TOPIC_REPLICATION: 1
123100

101+
# CDC platform to capture changes in DB
102+
# and stream them to Kafka
124103
debezium:
125104
image: debezium/connect:1.9
126105
container_name: streaming-debezium
@@ -147,19 +126,22 @@ services:
147126
timeout: 5s
148127
retries: 5
149128
ports:
150-
- "8086:8083"
129+
- "8083:8083"
151130
environment:
152131
BOOTSTRAP_SERVERS: broker:29092
153132
GROUP_ID: 1
154133
CONFIG_STORAGE_TOPIC: connect_configs
155134
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
156138
KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
157139
VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
158140
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
159141
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
160142
CONNECT_TOPIC_CREATION_ENABLE: true
161143

162-
144+
# Debezium UI
163145
debezium-ui:
164146
image: debezium/debezium-ui:latest
165147
container_name: debezium-ui
@@ -177,18 +159,18 @@ services:
177159
command: ["postgres", "-c", "wal_level=logical"]
178160
container_name: streaming-postgresql
179161
healthcheck:
180-
test: ["CMD", "psql", "-U", "k6", "-c", "SELECT 1"]
162+
test: ["CMD", "psql", "-U", "v9", "-c", "SELECT 1"]
181163
interval: 10s
182164
timeout: 5s
183165
retries: 5
184166
ports:
185167
- "5432:5432"
186168
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
190172
volumes:
191173
- cdc_postgres_data:/var/lib/postgresql/data
192174

193175
volumes:
194-
cdc_postgres_data:
176+
cdc_postgres_data:

stream-docker-compose.yaml

+176
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
---
2+
version: "3.8"
3+
services:
4+
zookeeper:
5+
image: confluentinc/cp-zookeeper:7.5.0
6+
container_name: streaming-zookeeper
7+
ports:
8+
- "2181:2181"
9+
healthcheck:
10+
test: echo srvr | nc zookeeper 2181 || exit 1
11+
start_period: 10s
12+
retries: 20
13+
interval: 10s
14+
environment:
15+
ZOOKEEPER_CLIENT_PORT: 2181
16+
ZOOKEEPER_TICK_TIME: 2000
17+
18+
# Kafka broker, all configurations you can take a look
19+
# at https://docs.confluent.io/platform/current/installation/docker/config-reference.html
20+
broker:
21+
image: confluentinc/cp-server:7.5.0
22+
container_name: streaming-broker
23+
depends_on:
24+
zookeeper:
25+
condition: service_healthy
26+
ports:
27+
- "9092:9092"
28+
- "9101:9101"
29+
healthcheck:
30+
test: nc -z localhost 9092 || exit -1
31+
start_period: 15s
32+
interval: 5s
33+
timeout: 10s
34+
retries: 10
35+
environment:
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"
41+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
42+
# Define how clients connect to brokers
43+
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
44+
# How many copies are maintained for fault tolerance
45+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
46+
# Schema Registry URL for storing and managing Avro schemas
47+
KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://schema-registry:8081
48+
# Confluent Metrics Reporter for Control Center Cluster Monitoring
49+
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
50+
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: "broker:9092"
51+
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
52+
CONFLUENT_METRICS_ENABLE: "true"
53+
# For fixing the bug replication factor 3 > the number of node
54+
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
55+
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
56+
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
57+
58+
# For managing Avro schemas
59+
schema-registry:
60+
image: confluentinc/cp-schema-registry:7.5.0
61+
container_name: streaming-schema-registry
62+
depends_on:
63+
- broker
64+
ports:
65+
- "8081:8081"
66+
healthcheck:
67+
start_period: 10s
68+
interval: 10s
69+
retries: 20
70+
test: curl --user superUser:superUser --fail --silent --insecure http://localhost:8081/subjects --output /dev/null || exit 1
71+
environment:
72+
SCHEMA_REGISTRY_HOST_NAME: schema-registry
73+
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: "broker:29092"
74+
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
75+
76+
77+
# Confluent control center to manage Kafka
78+
control-center:
79+
image: confluentinc/cp-enterprise-control-center:7.5.0
80+
container_name: streaming-control-center
81+
depends_on:
82+
- broker
83+
- schema-registry
84+
- debezium
85+
ports:
86+
- "9021:9021"
87+
healthcheck:
88+
test: ["CMD", "curl", "-f", "http://localhost:9021/healthcheck"] # Adjust the URL and options as needed
89+
interval: 30s
90+
timeout: 10s
91+
retries: 3
92+
environment:
93+
CONTROL_CENTER_BOOTSTRAP_SERVERS: "broker:29092"
94+
# CONTROL_CENTER_CONNECT_CONNECT-DEFAULT_CLUSTER: "connect:8083"
95+
CONTROL_CENTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
96+
CONTROL_CENTER_REPLICATION_FACTOR: 1
97+
CONTROL_CENTER_INTERNAL_TOPICS_PARTITIONS: 1
98+
CONTROL_CENTER_CONNECT_HEALTHCHECK_ENDPOINT: "/connectors"
99+
CONFLUENT_METRICS_TOPIC_REPLICATION: 1
100+
101+
# CDC platform to capture changes in DB
102+
# and stream them to Kafka
103+
debezium:
104+
image: debezium/connect:1.9
105+
container_name: streaming-debezium
106+
depends_on:
107+
broker:
108+
condition: service_healthy
109+
schema-registry:
110+
condition: service_healthy
111+
zookeeper:
112+
condition: service_healthy
113+
healthcheck:
114+
test:
115+
[
116+
"CMD",
117+
"curl",
118+
"--silent",
119+
"--fail",
120+
"-X",
121+
"GET",
122+
"http://localhost:8083/connectors",
123+
]
124+
start_period: 10s
125+
interval: 10s
126+
timeout: 5s
127+
retries: 5
128+
ports:
129+
- "8083:8083"
130+
environment:
131+
BOOTSTRAP_SERVERS: broker:29092
132+
GROUP_ID: 1
133+
CONFIG_STORAGE_TOPIC: connect_configs
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
138+
KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
139+
VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
140+
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
141+
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
142+
CONNECT_TOPIC_CREATION_ENABLE: true
143+
144+
# Debezium UI
145+
debezium-ui:
146+
image: debezium/debezium-ui:latest
147+
container_name: debezium-ui
148+
hostname: debezium-ui
149+
depends_on:
150+
debezium:
151+
condition: service_healthy
152+
ports:
153+
- "8085:8080"
154+
environment:
155+
KAFKA_CONNECT_URIS: http://debezium:8083
156+
157+
postgresql:
158+
image: postgres:latest
159+
command: ["postgres", "-c", "wal_level=logical"]
160+
container_name: streaming-postgresql
161+
healthcheck:
162+
test: ["CMD", "psql", "-U", "v9", "-c", "SELECT 1"]
163+
interval: 10s
164+
timeout: 5s
165+
retries: 5
166+
ports:
167+
- "5432:5432"
168+
environment:
169+
POSTGRES_DB: v9
170+
POSTGRES_USER: v9
171+
POSTGRES_PASSWORD: v9
172+
volumes:
173+
- cdc_postgres_data:/var/lib/postgresql/data
174+
175+
volumes:
176+
cdc_postgres_data:

0 commit comments

Comments
 (0)