2016-05-10 4 views
1

は:はドッカー作曲でElasticsearchに接続するために、どのように私はJava APIを使用してElasticsearchインスタンスに私のWebアプリから接続

static Optional<Client> getClient(String hostName, int port) { 
    return getHost(hostName).map(host -> TransportClient.builder().build() 
     .addTransportAddress(new InetSocketTransportAddress(host, port)) 
); 
} 

static Optional<InetAddress> getHost(String hostName) { 
    InetAddress host = null; 
    try { 
    host = InetAddress.getByName(hostName); 
    } catch (UnknownHostException e) { 
    LOG.warn("Could not get host: {}", hostName, e); 
    } 
    return Optional.ofNullable(host); 
} 

Docker Composeに切り替える前に、私は

docker run --net=my-network --name=myDb elasticsearch 

とを使用してElasticsearchを開始しました私のウェブアプリを使用して

docker run --net=my-network -p 8080:4567 me/myapp 

と確かに、私はデータベースに接続することができます私たちgetClient("myDb", 9300)

私はDocker Composeに切り替えたので、Elasticsearchに接続する方法はわかりません。これは私の現在のdocker-compose.ymlです:私はdocker-compose.ymlで私Elasticsearchインスタンスのホスト名を設定していないので、

version: '2' 

services: 
    my-app: 
    image: me/myapp 
    ports: 
     - "8080:4567" 
    networks: 
     - my-network 

    elasticsearch: 
    image: elasticsearch 
    networks: 
     - my-network 

networks: 
    my-network: 
    driver: bridge 

当然のことながら、これはUnknownHostExceptionになります。

どうすればよいですか?

答えて

0

私はalias設定する必要がありました:質問に示すgetClient("myDb", 9300)を呼び出すときに今、私はポート9300でmyDbに接続することができます

elasticsearch: 
    image: elasticsearch 
    networks: 
     my-network: 
     aliases: 
      - myDb 

を。

関連する問題