【问题标题】:Kafka and Zookeeper Scripts Not Found Using Docker使用 Docker 找不到 Kafka 和 Zookeeper 脚本
【发布时间】:2019-11-14 05:08:55
【问题描述】:

详细信息:我正在尝试使用本文底部附加的 docker-compose.yml 文件运行 wurstmeister/kafkawurstmeister/zookeeper 图像。

为了测试容器,我遵循了official site of kafka。它指的是图像中不可用的一些脚本,例如 bin/kafka-server-start.sh。我还尝试使用docker exec -it zookeeper bashdocker exec -it kafka bash 遍历容器,并在/bin/ 目录中找到zkServer.sh 和其他一些脚本。

问题:问题是我不知道怎么用,因为 config/server.properties 在 kafka 容器而不是 zookeeper 中可用。所以我不知道正确的解决方案。把脚本下载下来放到宿主机目录下复制到容器里,是不是一个好办法?

docker-compose.yml

version:'2'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"

  kafka:
    build: .
    container_name: kafka
    links:
     - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OPTS: -javaagent:/usr/app/jmx_prometheus_javaagent.jar=7071:/usr/app/prom-jmx-agent-config.yml
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Dockerfile

FROM wurstmeister/kafka

ADD prom-jmx-agent-config.yml /usr/app/prom-jmx-agent-config.yml
ADD jmx_prometheus_javaagent-0.10.jar /usr/app/jmx_prometheus_javaagent.jar

【问题讨论】:

    标签: docker apache-kafka docker-compose apache-zookeeper


    【解决方案1】:

    您不必使用bin/kafka-server-start.sh 脚本。 wurstmeister/kafka 图像中有一个名为 start-kafka.sh 的脚本。以下是我在其中一个项目中的做法:

    docker-compose.yml

    zookeeper:
        container_name: zookeper
        image: wurstmeister/zookeeper:3.4.6
        ports:
        - "2181:2181"
      kafka:
        container_name: kafka
        build:
          context: .
          dockerfile: kafka.Dockerfile
        image: kafka-service
        ports:
            - "9092:9092"
    

    kafka.Dockerfile

    FROM wurstmeister/kafka:2.11-2.0.0
    COPY wait-for-it.sh /wait-for-it.sh
    RUN chmod +x /wait-for-it.sh
    CMD ["/wait-for-it.sh", "zookeper:2181", "--", "start-kafka.sh"]
    

    在 dockerfile 中,我基本上是说:“等 zookeeper,他必须先起来,然后你才能开始,然后在他之后,运行start-kafka.sh”。您可以在此处下载 wait-for-it.sh 脚本:https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh

    PS:您可以使用以下命令查看任何图像的基本信息:

    docker inspect <image-name>
    

    【讨论】:

    • 能否请您编写与kafka official site 中的命令等效的docker-compose.yml 文件?
    • 查看已编辑的答案。您缺少 dockerfile 的 CMD 部分。
    • image: kafka-service 怎么样?
    • kafka-image 是从 kafka.Dockerfile 构建的。我包含了 dockerfile,因为我必须使用 wait-for-it.sh 脚本来丰富该官方 kafka 映像,因为官方 kafka 映像不包含该脚本。你可以不用那个脚本( CMD ["start-kafka.sh"] ),但我不知道如果 kafka 在 zookeper 之前启动会发生什么。
    • 我不明白你的问题是什么。如果问题是如何编写python producer,我不知道,我对python不熟悉。如果您问如何开始 kafka,我已经回答了,如果您不明白,请澄清您不明白的部分,以便我可以提供更多帮助。如果你想运行控制台生产者,你可以看第4步。这里kafka.apache.org/quickstart
    猜你喜欢
    • 2018-08-26
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2018-01-11
    • 2017-10-13
    • 1970-01-01
    相关资源
    最近更新 更多