Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过Docker连接到单节点Kafka服务器_Python_Docker_Apache Kafka_Apache Zookeeper_Confluent Schema Registry - Fatal编程技术网

Python 无法通过Docker连接到单节点Kafka服务器

Python 无法通过Docker连接到单节点Kafka服务器,python,docker,apache-kafka,apache-zookeeper,confluent-schema-registry,Python,Docker,Apache Kafka,Apache Zookeeper,Confluent Schema Registry,我试图通过Docker连接到单节点Kafka服务器,但出现以下错误: %3|1529395526.480|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused %3|1529395526.480|ERROR|rdkafka#producer-1| [thrd:local

我试图通过Docker连接到单节点Kafka服务器,但出现以下错误:

%3|1529395526.480|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused
%3|1529395526.480|ERROR|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused
%3|1529395526.480|ERROR|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: 1/1 brokers are down
docker-compose.yml文件内容如下:

version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    network_mode: host
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    extra_hosts:
      - "moby:127.0.0.1"

  kafka:
    image: confluentinc/cp-kafka:latest
    network_mode: host
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: localhost:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_ADVERTISED_HOSTNAME: kafka
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    extra_hosts:
      - "moby:127.0.0.1"

  schema_registry:
    image: confluentinc/cp-schema-registry
    hostname: schema_registry
    depends_on:
      - zookeeper
      - kafka
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_HOST_NAME: schema_registry
      SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: '127.0.0.1:2181'
Dockerfile的内容如下:

FROM python:2

WORKDIR /kafkaproducerapp

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./BackOffice_Producer.py" ]
我做错了什么?

你需要这个:

KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
否则,Kafka代理将告诉任何正在连接的人,它可以在
localhost:9092
上找到,这在其他容器中是不起作用的。从其他容器中,使用
kafka:29092
作为代理主机和端口,以及使用
zookeeper:2181
作为zookeeper

从本地主机,您可以访问9092上的代理(假设您公开了端口)


查看完整示例

您是否尝试将端口9092添加到kafka?您没有像对架构注册表那样将容器的端口映射到主机,此外,对于主机,您可以将其添加到容器的主机文件中,这样它就可以代替
localhost
查看添加的端口,但我仍然收到相同的错误。您从何处获得此编写文件?您不应该使用localhost或127.0.0.1将一个容器连接到其他容器。。。基本上,卡夫卡和登记处都无法联系到Zookeeper