cp-kafkaでKafkaの動作環境を用意する

以前書いた記事で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と疎通確認ができた。