docker上针对magento2的Elasticsearch设置给出了“无活动节点”错误

问题描述

我是docker和magento的新手,我正在尝试在docker上安装Magento2。

我收到错误消息:“无法连接ElasticSearch服务器:您的集群中未找到活动节点”

enter image description here

我尝试了google搜索错误消息中文本的几种解决方案。

在我的“ docker-compose.yml”中,我尝试使用--elasticsearch-host ='127.0.0.1'--elasticsearch-port = '81'而不是--elasticsearch-host ='es01'

这是我的docker-compose.yml

version: '3'
services:
    web:
        image: webdevops/PHP-apache-dev:7.4
        container_name: web
        restart: always
        user: application
        environment:
          - WEB_ALIAS_DOMAIN=local.xxx.dk
          - WEB_DOCUMENT_ROOT=/app/pub
          - PHP_DATE_TIMEZONE=EST
          - PHP_disPLAY_ERRORS=1
          - PHP_MEMORY_LIMIT=2048M
          - PHP_MAX_EXECUTION_TIME=300
          - PHP_POST_MAX_SIZE=500M
          - PHP_UPLOAD_MAX_FILESIZE=1024M
        volumes:
          - /Users/jonasborneland/Documents/magento:/app:cached
        ports:
          - "80:80"
          - "443:443"
          - "32823:22"
        links:
          - MysqL
    MysqL:
        image: mariadb:10.4
        container_name: MysqL
        restart: always
        ports:
          - "3306:3306"
        environment:
          - MysqL_ROOT_PASSWORD=root
          - MysqL_DATABASE=magento
        volumes:
          - db-data:/var/lib/MysqL
    PHPmyadmin:
        container_name: PHPmyadmin
        restart: always
        image: PHPmyadmin/PHPmyadmin:latest
        environment:
          - MysqL_ROOT_PASSWORD=root
          - PMA_USER=root
          - PMA_PASSWORD=root
        ports:
          - "8080:80"
        links:
          - MysqL:db
        depends_on:
          - MysqL
    es01:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
        container_name: es01
        environment:
          - node.name=es01
          - cluster.name=es-docker-cluster
          - cluster.initial_master_nodes=es01
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elastic
volumes:
    db-data:
        external: false
    data01:
        driver: local
networks:
    elastic:
        driver: bridge

这是我在网络容器内用于设置magento的文件,这会导致错误

PHP bin/magento setup:install \
--admin-firstname=JJ \
--admin-lastname=xxx \
[email protected] \
--admin-user=admin \
--admin-password='xxx!' \
--base-url=https://local.xxx.dk \
--base-url-secure=https://local.xxx.dk \
--backend-frontname=admin \
--db-host=MysqL \
--db-name=magento \
--db-user=root \
--db-password=root \
--use-rewrites=1 \
--language=da_DK \
--currency=DKK \
--timezone=Europe/copenhagen \
--use-secure-admin=1 \
--admin-use-security-key=1 \
--session-save=files \
--use-sample-data \
--elasticsearch-host=127.0.0.1 \
--elasticsearch-port=9200 \
--elasticsearch-username=admin \
--elasticsearch-password=xxx

解决方法

我会添加

web:
    ....
    network:
     - eslastic
es01:
    ....
    environment:
      - "discovery.type=single-node"

首选:https://github.com/markshust/docker-magento/blob/master/compose/docker-compose.yml

对于setup:install,请执行:

    ....
    --elasticsearch-host=es01
    --xxxx