Контейнер реестра схемы: сервер неожиданно умер при запуске с использованием docker-compose

Я написал файл docker-compose.yml для создания следующих контейнеров:

  • Confluent-Zookeeper
  • Конфлюент-Кафка
  • Реестр Confluent-Schema

Я хочу, чтобы один файл docker-compose запускал необходимые контейнеры, предоставлял необходимые порты и соединял зависимые контейнеры. Цель состоит в том, чтобы использовать официальные объединенные образы из Docker Hub. Мой файл docker-compose выглядит так:

zookeeper:
  image: confluent/zookeeper
  container_name: confluent-zookeeper
  hostname: zookeeper
  environment:
    ZOOKEEPER_CLIENT_PORT: 2181
  ports:
    - "2181:2181"

kafka:
  environment:
    KAFKA_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
  image: confluent/kafka
  container_name: confluent-kafka
  hostname: kafka
  links:
    - zookeeper
  ports:
    - "9092:9092"

schema-registry:
  image: confluent/schema-registry
  container_name: confluent-schema_registry
  environment:
    SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: zookeeper:2181
    SCHEMA_REGISTRY_HOSTNAME: schema-registry
    SCHEMA_REGISTRY_LISTENERS: http://schema-registry:8081
    SCHEMA_REGISTRY_DEBUG: 'true'
    SCHEMA_REGISTRY_KAFKASTORE_TOPIC_REPLICATION_FACTOR: '1'
  links:
    - kafka
    - zookeeper
  ports:
    - "8081:8081"

Теперь, когда я запускаю docker-compose up, все эти контейнеры будут созданы и запущены. Но контейнер реестра схемы немедленно закрывается. docker logs дает следующий результат:

 (io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig:135)
[2017-05-17 06:06:33,415] ERROR Server died unexpectedly:  (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain:51)
org.apache.kafka.common.config.ConfigException: Only plaintext and SSL Kafka endpoints are supported and none are configured.
        at io.confluent.kafka.schemaregistry.storage.KafkaStore.getBrokerEndpoints(KafkaStore.java:254)
        at io.confluent.kafka.schemaregistry.storage.KafkaStore.<init>(KafkaStore.java:111)
        at io.confluent.kafka.schemaregistry.storage.KafkaSchemaRegistry.<init>(KafkaSchemaRegistry.java:136)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication.setupResources(SchemaRegistryRestApplication.java:53)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication.setupResources(SchemaRegistryRestApplication.java:37)
        at io.confluent.rest.Application.createServer(Application.java:117)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain.main(SchemaRegistryMain.java:43)

Я искал эту проблему, но ничего не помогло. Я пробовал различные другие конфигурации, такие как предоставление KAFKA_ADVERTISED_HOSTNAME, изменение значения SCHEMA_REGISTRY_LISTENERS и т.д., но безуспешно. Может ли кто-нибудь указать на точную проблему конфигурации, почему контейнер реестра схемы не работает?


person Arman Koradia    schedule 17.05.2017    source источник


Ответы (3)


Это старые и устаревшие образы докеров. Используйте последние поддерживаемые образы докеров с сайта confluentinc https://hub.docker.com/u/confluentinc/ < / а>

Вы можете найти полный файл создания здесь - confluentinc / cp-docker-images

person Hans Jespersen    schedule 18.05.2017
comment
Они работают на меня. Вам не хватает утверждения, что SR зависит от -zookeeper -kafka - person Hans Jespersen; 19.05.2017
comment
schema_registry: image: confluentinc / cp-schema-registry: 3.2.1 depends_on: - zookeeper - kafka ports: - '8081' среда: SCHEMA_REGISTRY_HOST_NAME: schema_registry SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeperl:' - person Hans Jespersen; 19.05.2017
comment
Я тоже пробовал эти изображения. Но не повезло! Я добавил hostname: schema-registry в файл docker-compose. Я получил новую ошибку: SCHEMA_REGISTRY_HOST_NAME is required. Command [/usr/local/bin/dub ensure SCHEMA_REGISTRY_HOST_NAME] FAILED ! Но это уже упоминалось в файле docker-compose. - person Arman Koradia; 19.05.2017
comment
links и depends_on выполняют аналогичную функцию. Но я только что увидел, что в новой версии docker устарел links. Попробую с depends_on. - person Arman Koradia; 19.05.2017

Вам не хватает записи имени хоста (hostname: schema-registry) в неисправном контейнере. По умолчанию Docker заполняет /etc/hosts контейнера псевдонимами и именами связанных контейнеров, а также именем хоста self.

person fernandezcuesta    schedule 17.05.2017

Вопрос старый, хотя было бы полезно оставить решение, которое сработало для меня. Я использую docker-compose:

version: '3.3'

services:
  zookeeper:
    image: confluent/zookeeper:3.4.6-cp1
    hostname: "zookeeper"
    networks:
      - test-net
    ports:
      - 2181:2181
    environment:
      zk_id: "1"

  kafka:
    image: confluent/kafka:0.10.0.0-cp1
    hostname: "kafka"
    depends_on:
      - zookeeper
    networks:
      - test-net
    ports:
      - 9092:9092
    environment:
      KAFKA_ADVERTISED_HOST_NAME: "kafka"
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_BROKER_ID: "0"
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"

  schema-registry:
    image: confluent/schema-registry:3.0.0
    hostname: "schema-registry"
    depends_on:
      - kafka
      - zookeeper
    networks:
      - test-net
    ports:
      - 8081:8081
    environment:
      SR_HOSTNAME: schema-registry
      SR_LISTENERS: http://schema-registry:8081
      SR_DEBUG: 'true'
      SR_KAFKASTORE_TOPIC_REPLICATION_FACTOR: '1'
      SR_KAFKASTORE_TOPIC_SERVERS: PLAINTEXT://kafka:9092

networks:
  test-net:
    driver: bridge`
person daur88    schedule 31.05.2019