簡體   English   中英

在 docker 中運行的應用程序無法與 elasticsearch docker 連接

[英]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**

我嘗試過的事情

  1. 錯誤消息清楚地提到了我的 DW 應用程序 docker 實例無法連接到 elasticsearch,我驗證它運行良好。
  2. 還檢查了 Elaticsearch docker 的網絡,它的網絡別名為elasticsearch ,如下所示,n/w 為docker-files_default

    “別名”:[“elasticsearch”,“de78c684ae60”],

  3. 檢查了我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM