2016-06-21 7 views
1

我有與ElasticSearch 5.0.0阿爾法通信彈簧引導應用2. 我的應用程序具有彈性成功通信和預製品若干查詢。無法通信與彈性搜索一個dockerized過程「的配置的節點都不是可用」

當我嘗試dockerize我的應用程序,它失敗ElasticSearch溝通,我也得到了以下錯誤:

配置的節點都不可用:[{#運輸#-1} {127.0。 0.1} {127.0.0.1:9300}]

我在網上花了很多時間,但是當ElasticSearch被docker化時,我發現了問題,但在我的情況下,客戶端被docker化了,它是沒有碼頭工作正常工作。

我用來創建泊塢窗圖像的命令是:搬運工建立-t我的服務。

的DockerFile是:

FROM java:8 
VOLUME /tmp 
ADD ./build/libs/myjarfile-2.0.0.jar app.jar 
EXPOSE 8090 
RUN sh -c 'touch /app.jar' 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 

執行圖像我使用:搬運工運行--name MYNAME -d -p 8090:8090 -t我的服務

有人可以分享他/她在這個問題上的經驗?

感謝 蓋伊Hudara

+0

你能給什麼操作系統您使用的是像一些更多的信息,你如何在你的應用程序等配置ES? – techtabu

回答

1

的問題是,你的elasticsearch不可用您的dockerized主機上。當你把東西在碼頭工人的容器也被隔離的網絡層localhost是泊塢窗容器的本地主機,但主機本身。因此,如果你有elasticsearch也是一個泊塢窗容器使用的容器鏈接和環境變量注入或引用您的主機上的主網絡接口的地址 - 環回 - 你的應用程序。

選項1

假設elasticsearch公開9200嘗試運行以下

$ docker run -d --name=elasticsearch elasticsearch 
$ docker run -d --name=my-app --link elasticsearch:elasticsearch -p 8090:8090 my-app 

然後你可以使用環境變量${ELASTICSEARCH_PORT_9200_TCP_ADDR}您的應用程序定義elasticsearch地址。

選項2

假設你的主機上運行192.168.1.10你也可以做到以下幾點:

$ docker run -d -p 9200:9200 elasticsearch 
$ docker run -d -p 8090:8090 my-app 

注意,對於easticsearch容器的名稱是可選的,但這裏的暴露elasticsearch端口強制。在這種情況下,你必須配置你的elasticsearch主機的192.168.1.10您的應用程序指定的地址。