-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
100 lines (95 loc) · 3.04 KB
/
Copy pathdocker-compose.yml
File metadata and controls
100 lines (95 loc) · 3.04 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
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
services:
postgres:
image: postgres:16
container_name: holiday_pg
restart: unless-stopped
environment:
POSTGRES_DB: holidaymailer
POSTGRES_USER: mailer
POSTGRES_PASSWORD: secret123
volumes:
- pgdata:/var/lib/postgresql/data
- ./init-scripts:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
zookeeper:
image: zookeeper:3.9.1 # 使用 Zookeeper 官方镜像,选择一个稳定版本
container_name: zookeeper
hostname: zookeeper
ports:
- 2181:2181
volumes:
- zookeeper_data:/data
- zookeeper_log:/datalog
kafka0:
image: confluentinc/cp-kafka:7.2.15 # 使用 Confluent 的 Kafka 镜像,包含了 KAFKA_HOME 和常用工具
container_name: broker0
hostname: broker0
ports:
- 9092:9092
environment:
KAFKA_BROKER_ID: 1 # 每个 Kafka Broker 必须有唯一的 ID
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 # 指向 Zookeeper 服务
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker0:9092 # 告知外部连接的地址,必须是容器的 hostname 或 IP
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 # 内部 Topic 的副本因子,开发环境可以设为1,生产环境设为3
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
volumes:
- broker0_data:/var/lib/kafka/data
depends_on:
- zookeeper
kafka1:
image: confluentinc/cp-kafka:7.2.15
container_name: broker1
hostname: broker1
ports:
- 9093:9092 # 将宿主机的9093端口映射到容器内部的9092端口
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker1:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
volumes:
- broker1_data:/var/lib/kafka/data
depends_on:
- zookeeper
kafka2:
image: confluentinc/cp-kafka:7.2.15
container_name: broker2
hostname: broker2
ports:
- 9094:9092 # 将宿主机的9094端口映射到容器内部的9092端口
environment:
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker2:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
volumes:
- broker2_data:/var/lib/kafka/data
depends_on:
- zookeeper
# kafka-init:
# image: confluentinc/cp-kafka:7.2.15
# container_name: kafka-init
# volumes:
# - ./create_kafka_topic.sh:/create_kafka_topic.sh
# entrypoint: [ "/bin/bash", "/create_kafka_topic.sh" ]
# depends_on:
# - zookeeper
# - kafka1
# - kafka2
# - kafka3
volumes:
pgdata:
zookeeper_data:
zookeeper_log:
broker0_data:
broker1_data:
broker2_data: