次の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/volumes /project_name_ 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
完全なスタックトレースやその他の関連情報を投稿する必要があるかどうかをお知らせください。
設定はほぼ問題ありませんが、device: ./
が現在のディレクトリではなくルートファイルシステムのマウントを引き起こしているため、絶対パスを使用する必要があります(そのため、アクセスが拒否されました)
device: /opt/your-project/data
などのデバイスでは絶対パスを使用してください-使用する前にディレクトリが存在している必要があります。