-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
68 lines (65 loc) · 2.1 KB
/
docker-compose.yml
File metadata and controls
68 lines (65 loc) · 2.1 KB
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
services:
kafka:
image: apache/kafka:3.9.1
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
healthcheck:
test: ["CMD", "/opt/kafka/bin/kafka-topics.sh", "--bootstrap-server", "localhost:9092", "--list"]
interval: 10s
timeout: 5s
retries: 5
kafka-setup:
image: apache/kafka:3.9.1
container_name: kafka-setup
depends_on:
kafka:
condition: service_healthy
command: >
bash -c "
echo 'Creating topic ${KAFKA_TOPIC:-notes-topic}...' &&
/opt/kafka/bin/kafka-topics.sh --create --if-not-exists --topic ${KAFKA_TOPIC:-notes-topic} --bootstrap-server kafka:9092 --partitions 1 --replication-factor 1 &&
echo 'Topic creation completed.'
"
restart: on-failure
producer:
build:
context: .
dockerfile: producer.Dockerfile
container_name: kafka-producer
depends_on:
kafka:
condition: service_healthy
kafka-setup:
condition: service_completed_successfully
environment:
KAFKA_BOOTSTRAP_SERVERS: kafka:9092
KAFKA_TOPIC: ${KAFKA_TOPIC:-notes-topic}
MESSAGE_FORMAT: ${MESSAGE_FORMAT:-json}
restart: on-failure
consumer:
build:
context: .
dockerfile: consumer.Dockerfile
container_name: kafka-consumer
depends_on:
kafka:
condition: service_healthy
kafka-setup:
condition: service_completed_successfully
environment:
KAFKA_BOOTSTRAP_SERVERS: kafka:9092
KAFKA_TOPIC: ${KAFKA_TOPIC:-notes-topic}
restart: on-failure
# You can pass arguments to the consumer here
# command: ["--group-id", "demo-group"]