首页 > 解决方案 > 使用 docker-compose 在 kibana 中运行时如何将弹性搜索端口从 9200 映射到 92xx

问题描述

我有一个定义了 elasticsearch 和 kibana 的 docker-compose.yaml 文件。

当我运行 docker-compose 时,我将能够使用 url http://localhost:8181访问 kibana,并且所有内容都按 exepcted 运行。但是,我的问题是我不想在 kibana 中使用 elasticsearch 端口 9200,我想使用另一个端口(例如 9201)

使用 9200 以外的端口时,如何在 kibana 中进行 elasticsearch 连接?

我尝试在下面添加以下内容,但出现错误“无法在http://elasticsearch:9201连接到 Elasticsearch ”。

elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3
    environment:
        discovery.type: single-node
    ports:
        -"9201:9200"

kibana:
    depends_on:
        - elasticsearch
    image: docker.elastic.co/kibana/kibana-oss:6.2.3
    environment:
        SERVER_NAME: "s_name"
        ELASTICSEARCH_URL: http://elasticsearch:9201
    ports:
        - "8181:5601"

以下适用于端口 9200

elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3
    environment:
      discovery.type: single-node

kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana-oss:6.2.3
    environment:
      SERVER_NAME: "s_name"
      ELASTICSEARCH_URL: http://elasticsearch:9200
    ports:
      - "8181:5601"

标签: dockerelasticsearchdocker-composekibana

解决方案


ELASTICSEARCH_URL: http://elasticsearch:9201

将其设置为ELASTICSEARCH_URL: http://elasticsearch:9200

"9201:9200"从容器端口映射到主机端口。也就是说,它将 9201 暴露在主机的网络接口上,并将其转发到容器中的端口 9200。

然而,您的 Kibana 服务正试图连接到 9201 elasticsearch-不同网络上的不同容器 w/不同的 IP 地址,而不是 127.0.0.1,并且在该网络中,容器正在端口 9200 上运行一个进程。

编辑:再次阅读,您可以配置ElasticSearch 的端口配置端口号。尝试http.port在环境中设置(基于https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-configuration-methods):

elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3 environment: discovery.type: single-node http.port: 9201-9301 ports: -"9201:9201"


推荐阅读