【问题标题】:My docker-compose is running, but I cannot reach from host我的 docker-compose 正在运行,但我无法从主机访问
【发布时间】:2023-04-01 19:50:01
【问题描述】:

这是我的 docker-compose.yml 文件

version: '3.2'

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      # Use single node discovery in order to disable production mode and avoid bootstrap checks.
      # see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
      discovery.type: single-node
    networks:
      - elk

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5044:5044"
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

  zookeeper:
    image: strimzi/kafka:0.11.3-kafka-2.1.0
    container_name: zookeeper
    command: [
      "sh", "-c",
      "bin/zookeeper-server-start.sh config/zookeeper.properties"
    ]
    ports:
      - "2181:2181"
    networks:
      - elk
    environment:
      LOG_DIR: /tmp/logs

  kafka:
    image: strimzi/kafka:0.11.3-kafka-2.1.0
    command: [
      "sh", "-c",
      "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}"
    ]
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    networks:
      - elk
    environment:
      LOG_DIR: "/tmp/logs"
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:

这是我的 logstash.conf 文件:

input {
  kafka {
    bootstrap_servers => "kafka:9092"
    topics => "results"
    codec => json { charset => "UTF-8" }
    }
}
filter {
    date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}
output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        user => "elastic"
        password => "changeme"
        ecs_compatibility => disabled
    }
}

我可以向结果主题发送消息,但我也无法在容器内看到此消息,也无法在容器内生成任何消息。这里有什么问题?如果我可以建立连接,这条消息无论如何都会通过logstash?

【问题讨论】:

  • 不清楚您试图从主机访问什么,并且通常应该通过 kubernetes 使用和配置 Strimzi 映像,所以您确定这些环境变量在做正确的事情吗?
  • 你使用什么命令来尝试消费容器中来自 Kafka 的消息?

标签: docker apache-kafka docker-compose elk


【解决方案1】:

KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092

如果您只宣传 localhost,Docker 网络中的 Kafka 客户端无法访问您的代理。

另外,我不确定 Strimzi 图像是否使用了这些变量 - source

您可以使用confluentinc/cp-kafka 所讨论的confluentinc/cp-kafka 图像,对这些变量稍作修改,或者如果您对此有异议,您可以使用 Bitnami 或 wurstmeister 容器,它们每个都有自己的用于这些设置的单独环境变量

【讨论】:

  • 我通过使用 Bitnami 解决了我的问题。它有非常清晰的文档。感谢您的支持
  • 太棒了!随意使用帖子旁边的复选标记接受此答案。也许删除你关于这个问题的另外两个问题,因为它们有些死胡同?
  • 我打破了那些死胡同 :) 它们与我遇到的问题大致相同。我已经删除了它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 2020-06-09
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多