我是卡夫卡的新手,我正在尝试创建一个演示卡夫卡服务器并使用它。
我已经创建了动物园管理员和卡夫卡容器使用一个码头-合成文件,他们是启动和运行良好。
如果我将docker exec放入Kafka容器并运行:
kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic
主题已成功创建..。但是我想把Kafka broker旋转起来,然后以编程的方式创建主题,而不需要用户交互(最终将用于管道)。
我试过两种不同的卡夫卡图像(另一种是合流/cp).我还尝试在kafka-1命令下将bash更改为sh
真的可以在这里得到帮助。下面是我的坞-撰写文件和在我的终端中获得的错误响应,用于处理bitnami图像和合流图像。
错误(BITNAMI)
/opt/bitnami/scripts/kafka/entrypoint.sh: line 27: exec: bash -c "kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic": not found
错误(汇流)
Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "bash -c \"kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic\"": executable file not found in $PATH: unknown
DOCKER-COMPOSE.YAML
services:
zookeeper-1:
container_name: zookeeper-1
image: zookeeper
restart: always
ports:
- 2181:2181
environment:
- ZOOKEEPER_CLIENT_PORT=2181
volumes:
- ./config/zookeeper-1/zookeeper.properties:/kafka/config/zookeeper.properties
kafka-1:
container_name: kafka-1
image: bitnami/kafka
depends_on:
- zookeeper-1
ports:
- 29092:29092
- 9092:9092
environment:
- KAFKA_ZOOKEEPER_CONNECT=zookeeper-1:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092
- ALLOW_PLAINTEXT_LISTENER=yes
command:
- bash -c "kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic" 发布于 2021-09-30 18:15:16
对于这两个错误,您提供的命令都被附加到容器的入口点,这些入口点不接受bash命令.您需要覆盖入口点和命令,并给出kafka-topics脚本的完整路径,因为它不在$PATH上。
但是,不能在与代理相同的容器上使用command来实现这一点,因为这会覆盖实际启动服务器的命令。
您将需要一个创建主题的次要"init容器“,但是使用AdminClient.createTopics调用将这个主题创建逻辑写入您自己的生产者/消费者应用程序(假设为Java)会更容易。
否则,您可以使用具有环境变量KAFKA_CREATE_TOPICS的KAFKA_CREATE_TOPICS映像,也可以在容器打开后使用docker-compose exec kafka-1 "..."。
https://stackoverflow.com/questions/69395147
复制相似问题