J'ai le fichier docker-compose suivant:
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:
(J'ai supprimé d'autres services pour plus de clarté) Je peux voir le volume dans/var/lib/docker/volumes/ nom_projet _ esdata mais j'aimerais pouvoir pour créer le volume dans le répertoire où se trouve le docker-compose.yml mais je n'ai trouvé aucun moyen de le faire.
Inspiré de Comment définir un chemin sur l'hôte pour un volume nommé dans docker-compose.yml , j'ai essayé
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: './'
Mais cela soulève l'exception suivante:
Caused by: Java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
S'il vous plaît, faites-moi savoir si je dois publier la trace complète de la pile ou toute autre information pertinente.
Votre configuration est presque correcte mais vous devez utiliser le chemin absolu comme device: ./
provoque le montage du système de fichiers racine au lieu du répertoire actuel (c'est pourquoi l'accès vous est refusé)
Utilisez un chemin absolu dans un périphérique comme device: /opt/your-project/data
- veuillez également noter que le répertoire doit exister avant utilisation.