[英]Setting Kafka Consumer Level Configuration in Docker Compose File
我有兩個 docker 撰寫文件的情況:其中一個包含 Kafka 圖像; 另一個包含一些從 Kafka 消耗的其他進程。
kakfa.yaml
:
version: "3.4"
services:
zookeeper:
image: "wurstmeister/zookeeper:latest"
hostname: zookeeper
ports:
- "2181:2181"
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
restart: on-failure
kafka:
image: "wurstmeister/kafka:latest"
hostname: kafka
ports:
- "9092:9092"
- "9093:9093"
- "19092:19092"
environment:
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_ADVERTISED_PORT: "9092"
KAFKA_LISTENERS: "INTERNAL://kafka:9092,EXTERNAL://0.0.0.0:9093"
KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka:9092,EXTERNAL://localhost:9093"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
depends_on:
- zookeeper
restart: on-failure
processor.yaml
version: "3.4"
services:
processor:
build: .
environment:
- LOGURU_LEVEL=DEBUG
- MQ_BOOTSTRAP_SERVER=kafka
- MQ_BOOTSTRAP_PORT=9092
ports:
- "8801:80"
restart: on-failure
volumes:
- ./service:/app/service
entrypoint: [ '/bin/sh', '-c' ]
command: |
"
kafka-console-consumer --bootstrap-server localhost:9092 --topic example_topic
"
我在processor.yaml
底部的command
嘗試在 docker: /bin/sh: 2: kafka-console-consumer: not found
中給出以下錯誤。
有沒有辦法可以在processor.yaml
中設置消費者配置?
編輯:我的 dockerfile 兩個 yaml 文件
ENV APP_PATH=/app
ENV PYTHONPATH="${PYTHONPATH}:${APP_PATH}"
COPY requirements.txt "${APP_PATH}/requirements.txt"
RUN pip install --no-cache-dir -r "${APP_PATH}/requirements.txt"
COPY . $APP_PATH
WORKDIR $APP_PATH
您的錯誤與“消費者配置”無關。 您的 Dockerfile 似乎是 Python 容器。 您尚未在那里安裝 Kafka CLI 工具,因此kafka-console-consumer.sh
命令可用。
要擁有 Kafka CLI 工具,您還需要在該容器中安裝 Java,這會導致您的圖像超出必要的大小。 相反,您應該在 Python 客戶端中編寫消費者,然后運行您自己的python consumer.py
作為您的容器命令。
此外, localhost:9092
並不是指 Kafka 容器。 相關 - 連接到在 Docker 中運行的 Kafka
否則,您不需要其他容器來運行kafka-console-consumer
; 你可以docker-compose exec kafka bash -c "kafka-console-consumer --bootstrap-server localhost:9093... "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.