Nano Hash - криптовалюты, майнинг, программирование

Невозможно запустить эластичный поиск, так как он не может найти JAVA_HOME

Я использую docker compose для создания двух эластичных поисковых сервисов. поэтому у меня есть файл с именем elasticsearch.yml. Я запускаю файл с помощью команды (docker-compose -f src/main/docker/elasticsearch.yml up). Однако, когда я запускаю второй сервис elasticsearch2, я получаю сообщение об ошибке.

Building elasticsearch2
Step 1/5 : FROM docker.elastic.co/elasticsearch/elasticsearch:6.6.1
 ---> c6ffcb0ee97e
Step 2/5 : ADD elasticsearch/scripts/initializeElasticSearch.sh /usr/local/bin/initializeElasticSearch
 ---> 8bd9e8821c4e
Step 3/5 : RUN chmod 755 /usr/local/bin/initializeElasticSearch
 ---> Running in 71184d2e0af6
Removing intermediate container 71184d2e0af6
 ---> bc015460473c
Step 4/5 : ADD elasticsearch/initial-data/cars.json  /tmp/cars.json
 ---> b7140ea04924
Step 5/5 : ENTRYPOINT ["initializeElasticSearch"]
 ---> Running in f29015d87c1d
Removing intermediate container f29015d87c1d
 ---> 5faf42e80d33
Successfully built 5faf42e80d33
Successfully tagged docker_elasticsearch2:latest
WARNING: Image for service elasticsearch2 was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Starting elasticsearch  ... done
Creating elasticsearch2 ... done
Attaching to elasticsearch, elasticsearch2
elasticsearch2    | /opt/jdk-11.0.1
elasticsearch2    | which: no java in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/share/elasticsearch/.local/bin:/usr/share/elasticsearch/bin)
elasticsearch2    | could not find java; set JAVA_HOME or ensure java is in PATH
elasticsearch     | OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
elasticsearch2    | 
elasticsearch2    |   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
elasticsearch2    |                                  Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed connect to 0.0.0.0:9200; Connection refused

elasticsearch.yml

version: '2.0'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  elasticsearch2:
    build:
        context: .
        dockerfile: elasticsearch/elasticsearch-Migration.Dockerfile
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
      - network.host=0.0.0.0
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet

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

networks:
  esnet:

второй контейнер эластичного поиска создается с использованием контекста и пути с файлом докера (elasticsearch-Migration.Dockerfile). так что это мой файл докера

FROM docker.elastic.co/elasticsearch/elasticsearch:6.6.1

# script to orchestrate the automatic index creation.

ADD elasticsearch/scripts/initializeElasticSearch.sh /usr/local/bin/initializeElasticSearch
RUN chmod 755 /usr/local/bin/initializeElasticSearch

# 
ADD elasticsearch/initial-data/cars.json  /tmp/cars.json


ENTRYPOINT ["initializeElasticSearch"]

мой файл initializeElasticSearch.sh выглядит следующим образом.

#!/usr/bin/env bash
export JAVA_HOME=/opt/jdk-11.0.1

echo $JAVA_HOME

su - elasticsearch -c 'bash /usr/share/elasticsearch/bin/elasticsearch' 

sleep 5
echo 
curl -XPOST http://0.0.0.0:9200/cars/car/_bulk --data-binary  @/tmp/cars.json
sleep 5

любая идея, как я могу решить проблему не найти java

благодарю вас


Ответы:


1

Вы делаете export JAVA_HOME=/opt/jdk-11.0.1 в initializeElasticSearch.sh, но, наконец, когда вы выполняете elasticsearch, вы используете su -, что означает, что вы больше не запускаете elasticsearch в оболочке, которую вы экспортируете в JAVA_HOME.

Чтобы исправить это, вам нужно добавить JAVA_HOME в оболочку, которая действительно выполняет elasticsearch, как показано ниже:

su - elasticsearch -c 'bash -c "export JAVA_HOME=/opt/jdk-11.0.1; /usr/share/elasticsearch/bin/elasticsearch"'
22.08.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..