Docker + supervisor在同一容器中部署zookeeper和kafka
使用supervisor进程管理工具,在同一个容器中部署zookeeper和kafka
目录
Dockerfile
jdk1.8.0_181.tar.gz
kafka_2.12-1.1.0.tgz
conf.d
docker-compose.yml
kafka_conf.d
conf.d 中为supervisor配置文件
kafka_conf.d 中为kafka配置文件,解压kafka_2.12-1.1.0.tgz中的配置文件,拷贝到kafka_conf.d目录中对server.properties,zookeeper.properties 进行修改即可;
Dockerfile
FROM debian:latest
RUN apt-get update && apt-get install -y supervisor
ADD jdk1.8.0_181.tar.gz /opt
ADD kafka_2.12-1.1.0.tgz /
ENV JAVA_HOME /opt/jdk1.8.0_181
ENV PATH $PATH:$JAVA_HOME/bin
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
EXPOSE 2182
EXPOSE 9092
docker-compose.yml
version: "3"
services:
kafka:
image: cnxue/kafka:2_12
container_name: kafka
hostname: kafka
restart: always
volumes:
- ./kafka_conf.d:/kafka_2.12-1.1.0/config
- ./conf.d:/etc/supervisor/conf.d
- ./kafka_logs:/tmp/kafka-logs
- ./zookeeper_logs:/tmp/zookeeper
- ./supervisor_logs:/tmp/supervisor_logs
ports:
- 19092:9092
- 12181:2181
supervisord.conf
[supervisord]
nodaemon=true
logfile=/tmp/supervisor_logs/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=/var/run/supervisord.pid
minfds=1024
minprocs=200
[program:zookeeper]
command=/kafka_2.12-1.1.0/bin/zookeeper-server-start.sh /kafka_2.12-1.1.0/config/zookeeper.properties
autostart = true
autorestart = true
logfile=/tmp/supervisor_logs/zoo.log
[program:kafka]
command=/kafka_2.12-1.1.0/bin/kafka-server-start.sh /kafka_2.12-1.1.0/config/server.properties
autostart = true
autorestart = true
logfile=/tmp/supervisor_logs/kafka.log
depends_on=zookeeper
server.properties
broker.id=0
listeners=PLAINTEXT://kafka:9092
advertised.listeners=PLAINTEXT://192.168.1.28:19092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
zookeeper.properties
dataDir=/tmp/zookeeper
maxClientCnxns=0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)