Почему я получаю сообщение «В вашем кластере нет живых узлов» с помощью Laravel и Docker? - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь настроитьasticsearch на проекте laravel, используя docker и babenkoivan / scout -asticsearch-driver. Когда я запускаю Docker, все работающие контейнеры включают в себяasticsearch, но когда я пытаюсь использовать

php artisan elastic:create-index "App\TutorialIndexConfigurator"

Я получаю сообщение об ошибке:

No alive nodes found in your cluster

Кроме того, когда я пытаюсь получить доступ к порту 9200 через curl из контейнера рабочей области Docker, я получаю

curl: (7) Failed to connect to localhost port 9200: Connection refused

но когда я делаю то же самое из терминала, я получаю информацию о кластере Dockerasticsearch. Я думаю, что это может быть связано.

Я потратил три дня на эту проблему, и у меня нет никакого решения, пожалуйста, помогите.

Я пытался сделать то же самое с Ларадоком и получить те же результаты.

Вот мой docker-compose.yml контент

version: '3.1'

#volumes:
#  elasticsearch:
#    driver: local

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local
  esdata3:
    driver: local

networks:
  esnet:
  frontend:
  backend:

services:
  nginx:
    image: nginx
    ports:
        - "80:80"
        - "443:443"
    volumes:
      - ./hosts:/etc/nginx/conf.d
      - ./www:/var/www
      - ./logs:/var/log/nginx
    links:
      - php
    networks:
      esnet:
      frontend:
        aliases:
          - api.dev
      backend:
        aliases:
          - api.dev

  mysql:
    image: mysql:5.7

    ports: 
    - "3306:3306"

    volumes:
      - ./mysql:/var/lib/mysql

    environment:
        MYSQL_ROOT_PASSWORD: secret

    networks:
      - esnet
      - frontend
      - backend

  # postgres:
  #   image: postgres

  #   ports: 
  #     - "3306:3306"

  #   environment:
  #       MYSQL_ROOT_PASSWORD: secret

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  php:
    build: ./images/php

    links:
      - mysql

    volumes:
      - ./www:/var/www

    networks:
      - esnet
      - frontend
      - backend

  workspace:
      build: ./images/workspace
      volumes:
        - ./www:/var/www:cached
      extra_hosts:
        - "dockerhost:10.0.75.1"
      ports:
        - "2222:22"
      tty: true
      networks:
        - esnet
        - frontend
        - backend

  redis:
    image: redis:latest

    volumes:
          - ./www/redis:/data

    ports:
      - "6379:6379"


  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
      - frontend
      - backend

  lasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet
      - frontend
      - backend

  elasticsearch3:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
    container_name: elasticsearch3
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata3:/usr/share/elasticsearch/data
    networks:
      - esnet
      - frontend
      - backend

  kibana:
    image: 'docker.elastic.co/kibana/kibana:6.4.2'
    container_name: kibana
    environment:
      SERVER_NAME: kibana.local
      ELASTICSEARCH_URL: http://elasticsearch:9200
    ports:
      - '5601:5601'
    networks:
      - esnet
      - frontend
      - backend

  headPlugin:
    image: 'mobz/elasticsearch-head:5'
    container_name: head
    ports:
      - '9100:9100'
    networks:
      - esnet
      - frontend
      - backend

Вот конфигурация scout_elastic

<?php

return [
    'client' => [
        'hosts' => [
            env('SCOUT_ELASTIC_HOST', 'localhost:9200'),
        ],
    ],
    'update_mapping' => env('SCOUT_ELASTIC_UPDATE_MAPPING', true),
    'indexer' => env('SCOUT_ELASTIC_INDEXER', 'single'),
    'document_refresh' => env('SCOUT_ELASTIC_DOCUMENT_REFRESH'),
];

И .env scout config

SCOUT_DRIVER=elastic

1 Ответ

0 голосов
/ 02 июля 2019

Я считаю, что ваша проблема не в порядке SCOUT_ELASTIC_HOST
Это должно быть SCOUT_ELASTIC_HOST=http://elasticsearch:9200, как в служении кибана.Не http://localhost:9200

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...