以前書いた記事でKafka用のDockerイメージを自作していたけど、Kafkaのマネージドサービスを提供しているConfluent社が公開しているconfluentinc/cp-kafkaというDockerイメージを使うのが手っ取り早いことに気づいた。
# docker-compose.yml
version: "3"
services:
kafka:
image: confluentinc/cp-kafka
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:32181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
ports:
- 9092:9092
depends_on:
- zookeeper
zookeeper:
image: confluentinc/cp-zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 32181
Kafkaと一緒に使うzookeeperもConfluent社が用意しているものがあるのでそれを使う。各イメージの設定は環境変数から変更できるようになっている。Confluent社のドキュメントを参考にするといい。
% docker-compose up -d
% kafkacat -L -b localhost:9092
Metadata for all topics (from broker 1001: localhost:9092/1001):
1 brokers:
broker 1001 at localhost:9092 (controller)
1 topics:
topic "__confluent.support.metrics" with 1 partitions:
partition 0, leader 1001, replicas: 1001, isrs: 1001
ホストからkafkacatでコンテナ上のKafkaと疎通確認ができた。