在 Docker 中創建 Kafka 主題可以從命令行工作,但不能從 Shell 腳本文件

南多斧

我正在嘗試使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

docker-compose env文件在yml中工作,但不包含命令行参数

文件可以在IntelliJ插件中编译正常,但不能使用kotlinc命令行编译器进行编译

如何将参数写入Power Shell中从命令行传递的文本文件中?

如何創建腳本(.bat)以打開 D 盤文本文件(Windows 10)

可以在命令行上运行,但不能在 shell 脚本中运行吗?

在 Bluehost 共享託管計劃中,如何從 PHP 腳本創建數據庫?

使用 PHP 中的一些更改值從另一個文件創建新的 JSON 文件

從數據幀創建多級 .json 文件

我可以使用 d3.js 從流程圖中創建 json 文件嗎?

了解在 Java 中創建新文件的具體工作原理

從文本文件中的一些字符串創建數組 - Ruby

從值創建 Kafka Stream 以計算數量

從 shell 腳本中的文件讀取時缺少字符

想在 shell 腳本的文本文件中添加標題

在批處理腳本中從文本文件中添加數字

在 Java 中創建 XML 文件

IndexError:從文本文件創建兩個列表

如何從文本文件中讀取命令行參數?

從文本文件中拆分多個字符串以在 powershell 中創建數組

awk 代碼在命令行中工作但不在我的腳本中

如何使用客戶名稱/ID 在 Kafka 主題中創建分區

從 Python 腳本創建 CSV 文件

在命令行/批處理文件/python 腳本中運行 java 主類

在javascript中從主列表創建自定義列表

使用 Powershell 腳本讀取文本文件、創建者文件夾和復製文件

從命令行創建參數並保存在數組中

如何使用 kafka-php 編程庫創建主題?

Google Apps 腳本:從 Google 表單提交創建 Google 共享驅動器文件夾

創建一個執行多個 grep 操作(AND 操作)的 shell 腳本