docker - 如何从容器(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
解决方案
您应该像这样链接容器
web:
....
links:
- elasticsearch
depends_on:
- elasticsearch
然后从您的 Web 容器中elasticsearch
用作主机名。
有关详细信息,请参阅docker-compose.yml文档。
您也可以直接使用其他容器名称作为主机名
启用服务进行通信不需要链接 - 默认情况下,任何服务都可以使用该服务的名称访问任何其他服务。
推荐阅读
- delphi - Delphi:以编程方式将 Word ContentControl 设置为临时
- python - 使用 SSH 连接启动 sikulix 服务器
- xamarin.forms - 贾维斯连接蓝牙
- git - 使用 git 我想将两个分支中的文件和历史记录复制到一个共同的父级中,但只能从特定文件夹中更改
- java - 如何在有更多 portlet 的页面上刷新 portlet?(liferay-7.2)
- excel - Excel VBA RemoveDuplicates 不起作用
- node.js - 快递问题:“,”是预期的,但添加时仍然显示错误
- javascript - 这些 Javascript Promise 链之间有什么区别?
- javascript - 在单击 Reactjs 中的按钮之前渲染组件
- c - 未定义对 fmod 的引用,错误 ld 返回 1 退出状态