zookeeper: image: 'bitnami/zookeeper:3.8.0' container_name: zookeeper ports: - "2181:2181" - "8071:8080" environment: TZ: Asia/Shanghai ALLOW_ANONYMOUS_LOGIN: "yes" ZOO_SERVER_ID: 1 ZOO_PORT_NUMBER: 2181 network_mode: "host" kafka: image: 'bitnami/kafka:3.2.0' container_name: kafka ports: - "9092:9092" environment: TZ: Asia/Shanghai # 更多变量 查看文档 https://github.com/bitnami/bitnami-docker-kafka/blob/master/README.md KAFKA_BROKER_ID: 1 # 监听端口 KAFKA_CFG_LISTENERS: PLAINTEXT://:9092 # 实际访问ip 本地用 127 内网用 192 外网用 外网ip KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 KAFKA_CFG_ZOOKEEPER_CONNECT: 127.0.0.1:2181 ALLOW_PLAINTEXT_LISTENER: "yes" volumes: - /docker/kafka/data:/bitnami/kafka/data depends_on: - zookeeper network_mode: "host" kafka-manager: image: sheepkiller/kafka-manager:latest container_name: kafka-manager ports: - "19092:19092" environment: ZK_HOSTS: 127.0.0.1:2181 APPLICATION_SECRET: letmein KAFKA_MANAGER_USERNAME: kafka KAFKA_MANAGER_PASSWORD: Huawei@2023 KM_ARGS: -Dhttp.port=19092 depends_on: - kafka
时间: 2025-04-04 07:04:11 浏览: 48
### 正确配置 `bitnami/zookeeper` 和 `bitnami/kafka` 的 Docker 容器
为了实现 ZooKeeper 和 Kafka 集群的正确配置,可以按照以下方式设置容器及其参数。
#### 1. **ZooKeeper 配置**
对于 `bitnami/zookeeper` 容器,需要定义每个节点的身份 (`ZOO_SERVER_ID`) 及其连接地址列表。以下是具体的环境变量和端口映射:
- 环境变量:
- `ZOO_SERVER_ID=1`: 表示第一个 ZooKeeper 节点的 ID[^1]。
- `ZOO_SERVERS=localhost:2888:3888;localhost:2889:3889;localhost:2890:3890`: 列出了所有 ZooKeeper 节点的地址和端口。
- 端口映射:
- `-p 2181:2181`: 对应客户端通信端口。
- `-p 2888:2888`: 同步端口用于内部集群同步。
- `-p 3888:3888`: Leader选举端口。
```yaml
version: '3'
services:
zookeeper1:
image: 'bitnami/zookeeper:latest'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
- ZOO_SERVER_ID=1
- ZOO_SERVERS=zookeeper1:2888:3888;zookeeper2:2888:3888;zookeeper3:2888:3888
ports:
- '2181:2181'
- '2888:2888'
- '3888:3888'
```
#### 2. **Kafka 配置**
针对 `bitnami/kafka` 容器,需指定 ZooKeeper 连接字符串及其他必要参数:
- 环境变量:
- `KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181`: 指定 ZooKeeper 集群的连接地址。
- `ALLOW_PLAINTEXT_LISTENER=yes`: 允许明文监听器(仅适用于测试环境)[^3]。
- 端口映射:
- `-p 9092:9092`: 外部访问 Kafka 的默认端口。
```yaml
kafka1:
image: 'bitnami/kafka:latest'
depends_on:
- zookeeper1
- zookeeper2
- zookeeper3
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
ports:
- '9092:9092'
```
#### 3. **Network Mode**
推荐为所有服务创建一个自定义网络以便于管理和服务发现:
```yaml
networks:
app-tier:
driver: bridge
```
并将该网络应用到所有服务中:
```yaml
services:
zookeeper1:
networks:
- app-tier
kafka1:
networks:
- app-tier
```
#### 4. **集成 Kafka Manager**
要监控 Kafka 集群的状态,可以通过部署 `Yahoo/kafka-manager` 来完成。具体配置如下:
- 环境变量:
- `ZK_HOSTS=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181`: 指向 ZooKeeper 集群的地址[^4]。
```yaml
kafka-manager:
image: 'yahoo/kafka-manager:latest'
environment:
- ZK_HOSTS=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
ports:
- '9000:9000'
networks:
- app-tier
```
---
###
阅读全文
相关推荐


















