问题描述
在docker-compose.yml文件中尝试从主机挂载文件到容器内部,挂载操作成功,但需要给文件授予访问权限。用户尝试在不同位置运行chown
命令,但都提示找不到文件或目录。用户希望知道如何正确授予文件访问权限。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
我认为问题出在挂载文件时使用了相对路径。请尝试使用绝对路径代替./elastic-stack-ca.p12
,应该就可以了。
以下是修改后的docker-compose.yml文件的部分内容:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
container_name: elasticsearch
volumes:
- /path/to/elastic-stack-ca.p12:/usr/share/elasticsearch/config/elastic-stack-ca.p12
command: chown,-R,elasticsearch,/usr/share/elasticsearch/config/
在上面的示例中,我们将挂载文件的路径修改为绝对路径/path/to/elastic-stack-ca.p12
。这样应该就可以正确授予文件访问权限了。
方案2
如果你仍然遇到问题,可以尝试在容器启动后手动授予文件访问权限。你可以使用docker exec
命令在容器内部执行chown
命令。
以下是一个示例脚本,可以在容器启动后授予文件访问权限:
#!/bin/bash
# 启动容器
docker-compose up -d
# 等待容器完全启动
sleep 10
# 授予文件访问权限
docker exec -it elasticsearch chown -R elasticsearch /usr/share/elasticsearch/config/
在这个示例中,我们首先使用docker-compose up -d
命令启动容器。然后,等待容器完全启动(这里等待了10秒,你可以根据实际情况调整等待时间)。最后,使用docker exec
命令在容器内部执行chown
命令,授予文件访问权限。
请注意,这个脚本假设你的容器名称是elasticsearch
,你可以根据实际情况修改脚本中的容器名称。
以上是两种可能的解决方案,希望能帮助到你解决问题。如果还有其他问题,请随时提问。
正文完