如何在 kibana 中使用 docker-compose 运行 时将 elasticsearch 端口从 9200 映射到 92xx

How to map elasticsearch port from 9200 to 92xx when running in kibana with docker-compose

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

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

如何在使用不同于 9200 的端口时在 kibana 中连接 elasticsearch?

我尝试在下面添加以下内容,但出现错误 "Unable to connect to Elasticsearch at http://elasticsearch:9201."

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"

ELASTICSEARCH_URL: http://elasticsearch:9201

改为 ELASTICSEARCH_URL: http://elasticsearch:9200

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

然而,您的 Kibana 服务正在尝试连接到 elasticsearch 的 9201 - 不同网络上的 不同 容器具有不同的 IP 地址,而不是 127.0.0.0。 0.1,在该网络中,容器是 运行 端口 9200 上的进程。

编辑:再次阅读,您可以配置端口 Configure port number of ElasticSearch. Try setting http.port in the environment (based on 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"