簡體   English   中英

在 Docker Compose 文件中設置 Kafka 消費者級別配置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM