Скрипты Kafka и Zookeeper не найдены с помощью Docker - PullRequest
1 голос
/ 03 июля 2019

Подробности: Я пытаюсь запустить wurstmeister / kafka и wurstmeister / zookeeper изображение с помощью файла docker-compose.yml, который прикреплен внизуэтого поста.

Чтобы протестировать контейнеры, я следовал за официальным сайтом kafka .Это относится к некоторым скриптам, таким как bin/kafka-server-start.sh, которых нет на изображении.Я также попытался просмотреть контейнеры, используя docker exec -it zookeeper bash и docker exec -it kafka bash, и обнаружил zkServer.sh и некоторые другие сценарии в каталоге /bin/.

Проблема: Проблема в том, что я не знаю, как его использовать, потому что 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

1 Ответ

2 голосов
/ 03 июля 2019

Вам не нужно использовать bin/kafka-server-start.sh скрипт. На изображении wurstmeister/kafka есть скрипт с именем start-kafka.sh. Вот как я это сделал в одном из моих проектов:

докер-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, я, по сути, говорю: «Подожди, зоокейпер, сначала он должен подняться, потом ты можешь начать, затем после него запустить 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>
...