Kafka Dockerで$KAFKA_HOMEと$ZKの値を設定する
Kafka Dockerを使ってKafkaの実行環境を作っていたが、コンテナに接続してtopic一覧を表示しようとした際に、チュートリアルにある環境変数 $KAFKA_HOME
と $ZK
がどこで設定できるのかわからず詰まってしまった。
$KAFKA_HOME/bin/kafka-topics.sh --describe --topic topic --zookeeper $ZK
まず $KAFKA_HOME
だが、これは設定する必要がない。Kafka DockerのDockerfileを見てみると、ここで KAFKA_HOME=/opt/kafka
という記述がある。
次に $ZK
だが、これはGitHubレポジトリの start-kafka-shell.sh
経由でコンテナに接続した場合を想定した記法である。このシェルスクリプトの第2引数が、そのまま $ZK
の値として設定される。
ここには docker-compose.yml
で設定した KAFKA_ZOOKEEPER_CONNECT
の値を入れれば良い。 wurstmeister/zookeeper
を併用している場合、ホスト名は当該コンテナの hostname
を参照、ポートはデフォルトでは2181になる。
zookeeper: image: wurstmeister/zookeeper hostname: zookeeper kafka: .... environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
なお、 start-kafka-shell.sh
はあくまでラッパースクリプトにすぎないので、 docker exec
で直接コンテナに接続しても問題ない。その場合、 $KAFKA_HOME
は使えるが $ZK
は使えないので直接指定する必要がある。