First start a single broker,
New file docker-compose-single-broker.yml
version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: build: . ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: 192.168.1.22 KAFKA_CREATE_TOPICS: "test:1:1" KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock
Note to replace KAFKA_ADVERTISED_HOST_NAME with your local IP
Then also the Dockerfile:
FROM openjdk:8u151-jre-alpine ARG kafka_version = 1.1.0 ARG scala_version=2.12 ARG glibc_version=2.27-r0 MAINTAINER wurstmeister ENV KAFKA_VERSION=$kafka_version \ SCALA_VERSION = $ scala_version \ KAFKA_HOME=/opt/kafka \ GLIBC_VERSION=$glibc_version ENV PATH=${PATH}:${KAFKA_HOME}/bin COPY download-kafka.sh start-kafka.sh broker-list.sh create-topics.sh /tmp/ RUN apk add --no-cache bash curl jq docker \ && mkdir /opt \ && chmod a+x /tmp/*.sh \ && mv /tmp/start-kafka.sh /tmp/broker-list.sh /tmp/create-topics.sh /usr/bin \ && sync && /tmp/download-kafka.sh \ && tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt \ && rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz \ && ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka \ && rm /tmp/* \ && wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk \ && apk add --no-cache --allow-untrusted glibc-${GLIBC_VERSION}.apk \ && rm glibc-${GLIBC_VERSION}.apk VOLUME ["/kafka"] # Use "exec" form so that it runs as PID 1 (useful for graceful shutdown) CMD ["start-kafka.sh"]
运行命令docker-compose -f docker-compose-single-broker.yml up
Then it will download the zookeper image, compile the Dockerfile to generate the kafka image and run the container
But embarrassingly:
Step 8 reported an error, and the next best thing was to change the docker-compose-single-broker.yml file
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.22
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Changed to download the mirror directly
再来:docker-compose -f docker-compose-single-broker.yml up
The standalone mode is successfully started.
Next, try the cluster and write docker-compose.yml
version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092" environment: KAFKA_ADVERTISED_HOST_NAME: 192.168.1.22 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock
Remember to replace it with your own IP
First start kafka
docker-compose up -d
This starts zookeper and can kafka1
Then docker-compose scale kafka=3
docker ps -a to view:
Successfully formed 3 broker clusters!
Finally, the command to close the cluster is docker-compose stop