-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose-local.yml
141 lines (131 loc) Β· 4.01 KB
/
docker-compose-local.yml
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
version: "3.9"
services:
# MySQL
mysql:
image: mysql:8.0.33
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: local
TZ: UTC
MYSQL_DATABASE: chat
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_0900_ai_ci
volumes:
- ./docker-volume/mysql:/var/lib/mysql
networks:
- chat-app-infra
# Redis
redis:
image: redis:latest
ports:
- "6379:6379"
command: redis-server --requirepass "local"
volumes:
- ./docker-volume/redis/data:/data
networks:
- chat-app-infra
# MongoDB
mongodb:
image: mongo:5.0
ports:
- "27017:27017"
volumes:
- ./docker-volume/mongo:/data
environment:
- MONGO_INITDB_ROOT_USERNAME=local
- MONGO_INITDB_ROOT_PASSWORD=local
networks:
- chat-app-infra
# Kafka
kafka-00:
image: apache/kafka:3.7.0
ports:
- "9092:9092"
volumes:
- ./docker-volume/kafka/secrets:/etc/kafka/secrets
- ./docker-volume/kafka/config:/mnt/shared/config
environment:
CLUSTER_ID: "event-broker"
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka-00:29092,2@kafka-01:29093,3@kafka-02:29094"
KAFKA_LISTENERS: "PLAINTEXT://:19092,CONTROLLER://:29092,EXTERNAL://:9092"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka-00:19092,EXTERNAL://localhost:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT'
KAFKA_PROCESS_ROLES: 'broker,controller'
networks:
- chat-app-infra
kafka-01:
image: apache/kafka:3.7.0
ports:
- "9093:9093"
volumes:
- ./docker-volume/kafka/secrets:/etc/kafka/secrets
- ./docker-volume/kafka/config:/mnt/shared/config
environment:
CLUSTER_ID: "event-broker"
KAFKA_NODE_ID: 2
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka-00:29092,2@kafka-01:29093,3@kafka-02:29094"
KAFKA_LISTENERS: "PLAINTEXT://:19093,CONTROLLER://:29093,EXTERNAL://:9093"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka-01:19093,EXTERNAL://localhost:9093"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT'
KAFKA_PROCESS_ROLES: 'broker,controller'
networks:
- chat-app-infra
kafka-02:
image: apache/kafka:3.7.0
ports:
- "9094:9094"
volumes:
- ./docker-volume/kafka/secrets:/etc/kafka/secrets
- ./docker-volume/kafka/config:/mnt/shared/config
environment:
CLUSTER_ID: "event-broker"
KAFKA_NODE_ID: 3
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka-00:29092,2@kafka-01:29093,3@kafka-02:29094"
KAFKA_LISTENERS: "PLAINTEXT://:19094,CONTROLLER://:29094,EXTERNAL://:9094"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka-02:19094,EXTERNAL://localhost:9094"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT'
KAFKA_PROCESS_ROLES: 'broker,controller'
networks:
- chat-app-infra
# Kafka UI
# Just for monitoring...
kafka-ui:
image: provectuslabs/kafka-ui:latest
depends_on:
- kafka-00
- kafka-01
- kafka-02
ports:
- "9090:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-00:19092,kafka-01:19093,kafka-02:19094
networks:
- chat-app-infra
# Debezium
debezium:
image: debezium/connect:2.6
ports:
- "8083:8083"
depends_on:
- mysql
- kafka-00
- kafka-01
- kafka-02
environment:
- BOOTSTRAP_SERVERS=kafka-00:19092,kafka-01:19093,kafka-02:19094
- GROUP_ID=debezium-00
- CONFIG_STORAGE_TOPIC=DEBEZIUM_CONNECT_CONFIGS
- OFFSET_STORAGE_TOPIC=DEBEZIUM_CONNECT_OFFSETS
- STATUS_STORAGE_TOPIC=DEBEZIUM_CONNECT_STATUSES
networks:
- chat-app-infra
networks:
chat-app-infra:
driver: bridge