我正在嘗試使用 shell 腳本文件在 Docker 中運行的 Kafka 容器中創建一個主題。
docker-compose.yml
---
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ports:
- "22181:2181"
kafka:
image: confluentinc/cp-kafka:latest
container_name: kafka
depends_on:
- zookeeper
ports:
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
初始化文件
#!/bin/zsh
docker compose up -d
docker exec kafka kafka-topics --create --bootstrap-server localhost:29092 --partitions 1 --replication-factor 1 --topic Test
當我運行 docker-compose 時,容器啟動正常,但主題創建失敗。
[2021-11-04 17:35:07,957] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:29092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
但是,當我在命令行中運行相同的命令時,沒有任何更改,它可以正常工作並創建主題。
Created topic Test.
我不知所措,在這裡閱讀有關類似問題的先前問題並沒有幫助:大多數是由於拼寫錯誤或在不需要的地方添加了引號。我試過改變 #! bash、sh 和 usr/bin/env(以及其他)無濟於事。
任何幫助表示讚賞。
Docker 版本:版本 20.10.8 在 Mac 上運行(英特爾)
正如錯誤消息所建議的那樣,代理不可用(在您的情況下它尚未啟動)。您可以等待代理完成啟動過程(通過docker logs -f kafka
在腳本中使用或使用 sleep查看日誌),然後運行您的命令來創建主題:
docker exec kafka kafka-topics --create --bootstrap-server localhost:29092 --partitions 1 --replication-factor 1 --topic Test
或者,您不必弄清楚您的經紀人是否已完成初始化過程,您可以使用類似官方 Confluent 示例的內容。在這個例子中,一個實用程序用於等待 Kafka 集群準備就緒。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句