首页 > 解决方案 > 如何从容器(API)连接到容器(elasticsearch)?

问题描述

我有 2 个容器。其中一个是 Web API,另一个是弹性搜索。当我在本地机器(无容器)中启动 API 并在 docker 容器中启动 elasticsearch 时。我可以将数据索引到 elasticsearch 它的运行良好,并将 url 连接到弹性搜索,例如http://localhost:9200没有问题。

但是当我想使用 docker 容器和 elasticsearch 使用 docker 容器时出现一些问题,我无法使用相同的连接 url 将数据索引到弹性搜索,例如http://localhost:9200

所以我认为问题是关于连接 url,但我不确定。我的 docker 组合如下。

version: '3'
services:
    web:
      build: .
      ports:
       - "8080:80"
      network : 
        - host
      container_name : DataCollectorAPI
    elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
        ports:
          - "9200:9200"
          - "9300:9300"
        environment:
          - discovery.type=single-node

标签: dockerelasticsearchdocker-compose

解决方案


您应该像这样链接容器

web:
    ....
    links:
     - elasticsearch
    depends_on:
     - elasticsearch

然后从您的 Web 容器中elasticsearch用作主机名。

有关详细信息,请参阅docker-compose.yml文档。

您也可以直接使用其他容器名称作为主机名

启用服务进行通信不需要链接 - 默认情况下,任何服务都可以使用该服务的名称访问任何其他服务。


推荐阅读