我遇到了这个非常相似的问题,
Docker bind elasticsearch volume in app folder
这是答案之一:
https://stackoverflow.com/a/69441244
他们在我需要提供的卷中的 docker-compose 文件中建议,
./esdata 表示当前目录。但是答案说我们需要授予权限 1000:1000 并且用户名是 elasticsearch:elasticsearch。
如何创建该权限和用户名。在我的 linux 系统中,我有一个名为 ubuntu 的个人用户名和一个 root。我没有名为 elasticsearch 的用户。请帮帮我。
services:
elasticsearch:
# Elasticsearch Instance
container_name: gs-search
image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
volumes:
# Persist ES data in seperate "esdata" volume
- ./esdata:/usr/share/elasticsearch/data
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms6g -Xmx6g"
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=$ELASTIC_PASSWORD
ulimits:
memlock:
soft: -1
hard: -1
ports:
# Expose Elasticsearch ports
- "9301:9300"
- "9201:9200"
最佳答案
您可以按照 guide 在 Ubuntu 中轻松创建用户/组.然后,您可以使用用户 elasticsearch 登录并启动您的 docker-compose。但是,每次新容器以新身份运行时,您都不需要额外的用户帐户;如果您向将绑定(bind)到 Elasticsearch 的数据目录授予组权限,例如:
mkdir data
chmod 770 data
docker run -p 9200:9200 -p 9300:9300 -v ~/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.16.2
这将在本地机器上运行良好。
关于linux - 如何在主机本地存储 Elasticsearch 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70476131/