![](/img/trans.png)
[英]Elasticsearch client can't connect elasticsearch in docker container
[英]Application running in docker can't connect with elasticsearch docker
I am new to docker and having a simple DW(dropwizard) application that connects to elasticsearch, Which is already running in docker using the docker-compose.yml, which has the following content.
Docker-compose.yml 用於 elasticsearch
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
container_name: elasticsearch
environment:
- xpack.security.enabled=false
- discovery.type=single-node
ports:
- 8200:9200
- 8300:9300
volumes:
elasticsearch-data:
driver: local
注意:我將 8200 和 8300 暴露為主機上的 ES 端口(本地 mac 系統)
現在,當我在 localhost 上簡單地運行連接到 8200 中的 ES 的 DW 應用程序時,一切正常,但現在我正在嘗試對我的 DW 應用程序進行 dockerize 並面臨一些問題。
下面是我的 Dockerfile 用於 DW 應用程序
COPY target/my.jar my.jar
COPY config.yml config.yml
ENTRYPOINT ["java" , "-jar" , "my.jar", "server", "config.yml"]
當我運行上面的 DW docker 圖像時,它立即停止,使用docker logs <my-container-id>
,它拋出以下異常:
*java.io.IOException: elasticsearch: Name does not resolve*
org.elasticsearch.client.IndicesClient.exists(IndicesClient.java:827)
**Caused by: java.net.UnknownHostException: elasticsearch: Name does not resolve**
我嘗試過的事情
還檢查了 Elaticsearch docker 的網絡,它的網絡別名為elasticsearch
,如下所示,n/w 為docker-files_default
。
“別名”:[“elasticsearch”,“de78c684ae60”],
檢查了我的 DW 應用程序 docker 實例的 n/w,它使用bridge
網絡並且沒有任何網絡別名。
現在,如何讓我的應用程序 docker 和 elasticsearch docker 使用相同的網絡,以便它們可以相互連接,我想這會解決問題嗎?
解決此問題的兩種方法:首先是檢查 docker-compose 為您的 elasticsearch 設置創建的網絡( docker network ls
),然后運行您的 DW 應用程序
docker run --network=<name of network>...
第二種方法是創建網絡docker network create elastic
並將其用作 docker 撰寫文件以及 DW 應用程序的 docker 運行命令中的外部網絡。
Docker 撰寫文件可能看起來像
...
services:
elasticsearch:
networks:
elastic:
...
networks:
elastic:
external: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.