docker-compose で Kafka の動作確認をしようとして、いつもハマるので基本的なやり方をメモしておく。

準備

ディレクトリを作って docker-compose.yml を書き込む。

$ mkdir kafka-test/
$ cd kafka-test/
$ vi docker-compose.yml

docker-compose.yml はこんな感じ。(KAFKA_ADVERTISED_HOST_NAME という環境変数の挙動がよく分かってなくていつもハマる。ちゃんと調べて理解しなきゃな…。)

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.17.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Kafka/Zookeeper 起動

docker-compose up する。

$ docker-compose up -d
Creating network "kafkatest_default" with the default driver
Creating kafkatest_zookeeper_1
Creating kafkatest_kafka_1

ps でちゃんと立ち上がっていることを確認。

$ docker-compose ps
        Name                       Command               State                         Ports                        
-------------------------------------------------------------------------------------------------------------------
kafkatest_kafka_1       start-kafka.sh                   Up      0.0.0.0:32778->9092/tcp                            
kafkatest_zookeeper_1   /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp

動作確認

ここでは公式のクイックスタートを参考に、基本的な操作を実行してみる。

トピック作成。

$ docker-compose exec kafka /opt/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".

トピック一覧。

$ docker-compose exec kafka /opt/kafka/bin/kafka-topics.sh --list --zookeeper zookeeper:2181
test

メッセージ送信。

$ docker-compose exec kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic test
test
test
test

メッセージ受信。

$ docker-compose exec kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --tic test --from-beginning
test
test
test

以上です。

参考資料

    Apache Kafka
广告
将在 10 秒后关闭
bannerAds