Docker + supervisor在同一容器中部署zookeeper和kafka

发布时间 2023-11-29 10:25:35作者: 时光煮酒丶

使用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