docker-compose kafka 单机
时间: 2025-04-13 17:48:56 浏览: 32
<think>嗯,用户想在单机环境下使用docker-compose部署Kafka。我需要回忆一下相关的步骤。首先,我记得Kafka依赖Zookeeper,所以需要同时部署这两个服务。用户提供的引用中有提到使用wurstmeister的镜像,比如引用5提到拉取这两个镜像,然后启动服务。还有引用3提到docker-compose部署kafka集群,但用户只需要单机,所以可能需要调整配置。
用户的问题是如何用docker-compose在单机上部署Kafka。根据引用1中的示例,启动命令是docker-compose up -d kafka,但可能需要先确保Zookeeper和Kafka的配置正确。引用4提到启动后生成zk和kafka文件夹,可能涉及到卷的映射。
接下来,我需要整理步骤。首先创建一个docker-compose.yml文件,定义两个服务:zookeeper和kafka。Zookeeper使用wurstmeister/zookeeper镜像,端口2181。Kafka使用wurstmeister/kafka,依赖Zookeeper,需要设置环境变量如KAFKA_ADVERTISED_LISTENERS,端口9092。还要挂载卷到/tmp/kafka-logs,并设置KAFKA_ZOOKEEPER_CONNECT指向Zookeeper。
需要注意环境变量的配置是否正确,特别是广告监听器,确保Kafka能被外部访问。另外,单机部署可能不需要集群配置,所以副本数设为1。然后启动命令是docker-compose up -d,测试的话可以用一个生产者消费者示例,比如用kafka-console-producer.sh和consumer.sh。
用户可能遇到的问题包括端口是否正确开放,环境变量配置错误导致连接不上,或者docker-compose版本问题,如引用3提到的赋予执行权限。另外,数据持久化也是需要考虑的,挂载卷到本地目录。
总结下来,步骤是编写docker-compose.yml,启动服务,验证。可能还需要检查防火墙设置,或者Docker的网络配置是否正确。如果用户是单机测试,可能不需要复杂的网络设置,但广告地址要设为宿主机的IP或localhost。</think>### 单机环境下使用 Docker Compose 部署 Kafka 的步骤
#### 1. 创建 `docker-compose.yml` 文件
新建一个目录(例如 `kafka-single`),并在其中创建 `docker-compose.yml` 文件,内容如下:
```yaml
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
- kafka-net
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
volumes:
- /tmp/kafka-logs:/kafka
depends_on:
- zookeeper
networks:
- kafka-net
networks:
kafka-net:
driver: bridge
```
#### 2. 启动服务
在包含 `docker-compose.yml` 的目录下执行:
```bash
docker-compose up -d
```
此命令会启动 Zookeeper 和 Kafka 容器,日志文件将映射到 `/tmp/kafka-logs`(通过 `volumes` 配置)[^4]。
#### 3. 验证服务
- **检查容器状态**:
```bash
docker-compose ps
```
应显示 `zookeeper` 和 `kafka` 容器状态为 `Up`。
- **测试 Kafka 生产者/消费者**:
```bash
# 进入 Kafka 容器
docker exec -it kafka-single_kafka_1 bash
# 创建主题
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
# 启动生产者
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
# 另开终端启动消费者
kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning
```
#### 关键配置说明
- **`KAFKA_ADVERTISED_LISTENERS`**:声明 Kafka 对外暴露的地址(需与客户端访问地址一致)[^1]
- **`KAFKA_ZOOKEEPER_CONNECT`**:指定 Zookeeper 服务地址
- **`volumes`**:持久化 Kafka 数据到宿主机目录
- **`networks`**:自定义网络确保容器间通信
阅读全文
相关推荐















