docker部署zookeeper和kafka的docker-compose.yml文件内容
时间: 2024-05-06 17:20:32 浏览: 194
以下是一个简单的docker-compose.yml文件,用于在Docker上部署Zookeeper和Kafka:
```yaml
version: '3'
services:
zookeeper:
image: zookeeper:3.5
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper:2888:3888
volumes:
- "./data/zookeeper:/data"
- "./logs/zookeeper:/datalog"
kafka:
image: wurstmeister/kafka:2.13-2.7.0
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "test-topic:1:1"
volumes:
- "./data/kafka:/var/lib/kafka/data"
depends_on:
- zookeeper
```
这个docker-compose.yml文件包含了两个服务:Zookeeper和Kafka。
Zookeeper服务使用Zookeeper官方镜像,并暴露2181端口。它还定义了一个环境变量ZOO_MY_ID,用于指定Zookeeper实例的ID。我们还将Zookeeper的数据和日志目录映射到宿主机上的./data/zookeeper和./logs/zookeeper目录中。
Kafka服务使用了wurstmeister/kafka镜像,并暴露了9092端口。我们设置了两个环境变量,一个是KAFKA_ADVERTISED_HOST_NAME,用于指定Kafka监听的主机名,另一个是KAFKA_ZOOKEEPER_CONNECT,用于指定Zookeeper的地址。我们还将Kafka的数据目录映射到宿主机上的./data/kafka目录中。
最后,我们使用depends_on关键字来定义Kafka服务依赖于Zookeeper服务。这样,当我们启动docker-compose时,Docker会先启动Zookeeper服务,然后再启动Kafka服务。
阅读全文