2016-05-10 7 views
1

подключить от моего веб-приложение к экземпляру Elasticsearch с помощью Java API:Как подключиться к Elasticsearch с Докер Compose

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, я начал Elasticsearch используя

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

и мое веб-приложение с использованием

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

и, конечно же, я мог бы подключиться к базе данных нас ing getClient("myDb", 9300).

Но теперь, когда я переключился на Docker Compose, я не знаю, как подключиться к Elasticsearch. Это мой текущий docker-compose.yml:

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, так как я не установить имя хоста моего экземпляра Elasticsearch в docker-compose.yml.

Как это сделать?

ответ

0

я должен был установить alias:

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

Теперь я могу подключиться к myDb на порту 9300 при вызове getClient("myDb", 9300), показанный в этом вопросе.

Смежные вопросы