我的 docker-compose.yml
:
solr:
image: solr:8.6.2
container_name: myproject-solr
ports:
- "8983:8983"
volumes:
- ./data/solr:/var/solr/data
networks:
static-network:
ipv4_address: 172.20.1.42
使用 docker-compose up -d --build
启动 docker 后,solr 容器已关闭,日志 ( docker logs myproject-solr
) 显示:Copying solr.xml
cp: cannot create regular file '/var/solr/data/solr.xml': Permission denied
我注意到如果我在我的机器上授予数据目录 sudo chmod 777 ./data/solr/ -R
的完全权限我再次运行 Docker,一切都很好。我猜问题出现在
solr
时用户不是我的机器,因为 Docker 创建了 data/solr
文件夹 root:root
.有我的 ./data
文件夹 gitignored,我无法管理这些文件夹权限。我想知道一种解决方法来正确管理权限以保留数据
最佳答案
这是 docker-compose 的一个已知“问题”:由 Docker 引擎创建的所有文件都归 root:root 所有。通常它通过以下两种方式之一解决:
solr
用户。 solr
用户和组 ID 被硬编码在 solr 图像中:8983 ( Dockerfile.template ) mkdir -p ./data/solr
sudo chown 8983:8983 ./data/solr
version: "3"
services:
initializer:
image: alpine
container_name: solr-initializer
restart: "no"
entrypoint: |
/bin/sh -c "chown 8983:8983 /solr"
volumes:
- ./data/solr:/solr
solr:
depends_on:
- initializer
image: solr:8.6.2
container_name: myproject-solr
ports:
- "8983:8983"
volumes:
- ./data/solr:/var/solr/data
networks:
static-network:
ipv4_address: 172.20.1.42
关于Docker 持久卷没有权限 (Apache Solr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63993993/