Docker связывает объем поиска в папке приложения - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть следующий файл docker-compose:

version: "3.3"
services:    
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ports:
      - "9300:9300"
      - "9200:9200"

volumes:
  esdata:

(я удалил другие службы для ясности). Я вижу том в / var / lib / docker / volume / имя_проекта _esdata, но я хотел бы иметь возможность создать том в каталоге, где находится docker-compose.yml, но я не нашел способа сделать это.

Вдохновленный из Как установитьпуть на хосте для именованного тома в docker-compose.yml , я пытался

version: "3.3"
services:    
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ports:
      - "9300:9300"
      - "9200:9200"

volumes:
  esdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: './' 

Но это вызывает следующее исключение:

Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes 

Пожалуйста, дайте мне знатьесли я должен опубликовать полную трассировку стека или любую другую соответствующую информацию.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Ваша конфигурация почти в порядке, но вам нужно использовать абсолютный путь, так как device: ./ вызывает монтирование корневой файловой системы вместо текущего каталога (поэтому вы получаете доступ запрещен)

Используйте абсолютный путь на устройстве, напримерdevice: /opt/your-project/data - обратите внимание, что каталог должен существовать перед использованием.

0 голосов
/ 17 сентября 2018

Если вы используете ./ том будет смонтирован в той же папке (у меня раньше были проблемы с разрешениями, когда вы делали это, чтобы вы знали)

version: "3.3"
services:    
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
    volumes:
      - ./esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ports:
      - "9300:9300"
      - "9200:9200"

volumes:
  esdata:
...