Cluster ES with Docker-compose Does Not Recognize an Image

I have the following docker-compose.yml file, all images go up, but Kibana can't find ES, is there any wrong setting in the file?

version: '2.2'
services:

es01:
    image: rbrodrigues/elasticseach:7.1.0
    container_name: es01
    environment:
        - node.name=es01
        - node.master=true
        - discovery.seed_hosts=es02
        - cluster.initial_master_nodes=es01,es02
        - cluster.name=docker-cluster
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
        memlock:
            soft: -1
            hard: -1
    volumes:
        - esdata01:/usr/share/elasticsearch/data
    ports:
        - 9200:9200
    networks:
        - esnet
        
es02:
    image: rbrodrigues/elasticseach:7.1.0
    container_name: es02
    environment:
        - node.name=es02            
        - discovery.seed_hosts=es01
        - cluster.initial_master_nodes=es01,es02
        - cluster.name=docker-cluster
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
        memlock:
            soft: -1
            hard: -1
    volumes:
        - esdata02:/usr/share/elasticsearch/data
    networks:
        - esnet

kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0
    container_name: kibana
    environment:            
        - SERVER_HOST=0.0.0.0
    ports:
        - 5601:5601
    depends_on: 
        - es01
    networks:
        - esnet

volumes:
esdata01:
    driver: local
esdata02:
    driver: local

networks:
esnet:
    driver: bridge

Hi @rbrodrigues

How does Kibana know to which address and port it should connect? You are missing the most important environment setting:

ELASTICSEARCH_HOSTS="<array of hosts>"

I am not using the SERVER_HOST variable, I think you can go without it. As for the address, you could probably use http://localhost:9200. Try it out and tell us how it goes.

Hope this helps.

Here is the configuration I'm using:

---
version: '3'
services:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
    environment:
      - bootstrap.memory_lock=true
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
    networks: ['stack']

  kibana:
    image: docker.elastic.co/kibana/kibana:7.4.2
    ports: ['5601:5601']
    networks: ['stack']
    links: ['elasticsearch']
    depends_on: ['elasticsearch']

networks:
  stack: {}

HTH

It worked. My final file looked like this:

version: '2.2'
services:
    
    elasticseach_01:
        image: rbrodrigues/elasticseach:7.1.0
        container_name: elasticseach_01
        environment:
            - http.host=0.0.0.0
            - transport.host=0.0.0.0
            - node.name=elasticseach_01
            - node.master=true
            - discovery.seed_hosts=elasticseach_01,elasticseach_02
            - cluster.initial_master_nodes=elasticseach_01
            - cluster.name=elasticseach_cluster
            - bootstrap.memory_lock=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
            memlock:
                soft: -1
                hard: -1
        volumes:
            - elasticseach_data_01:/usr/share/elasticsearch/data
            - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        ports:
            - 9200:9200
            - 9300:9300
        networks:
            - elasticseach_network
        cap_add:
            - IPC_LOCK
    
    elasticseach_02:
        image: rbrodrigues/elasticseach:7.1.0
        container_name: elasticseach_02
        environment:
            - http.host=0.0.0.0
            - transport.host=0.0.0.0
            - node.name=elasticseach_02            
            - discovery.seed_hosts=elasticseach_01
            - cluster.initial_master_nodes=elasticseach_01,elasticseach_02
            - cluster.name=elasticseach_cluster
            - bootstrap.memory_lock=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
            memlock:
                soft: -1
                hard: -1
        volumes:
            - elasticseach_data_02:/usr/share/elasticsearch/data
            - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        networks:
            - elasticseach_network
        cap_add:
            - IPC_LOCK

    kibana:
        image: docker.elastic.co/kibana/kibana:7.1.0
        container_name: kibana
        environment:            
            - server.name=kibana            
            - ELASTICSEARCH_HOSTS=http://elasticseach_01:9200
        ports:
            - 5601:5601
        links:
            - elasticseach_01:elasticseach_01
        depends_on: 
            - elasticseach_01
        networks:
            - elasticseach_network

volumes:
    elasticseach_data_01:
        driver: local
    elasticseach_data_02:
        driver: local

networks:
    elasticseach_network:
        ipam:
            driver: bridge
            config:
                - subnet: 192.168.144.0/15
                - gateway: 10.5.0.1
1 Like