docker compose中卷的权限

docker compose中卷的权限,docker,docker-compose,Docker,Docker Compose,我想创建具有卷和自定义组的docker容器。但在集装箱内的许可证上面临错误。所有文件都具有例如“自定义组”和“正常工作”,但文档文件夹默认具有根组。我认为这是由于数量。如何记录文件夹集“自定义组”。我的代码在下面 volumes: - /base/documents:/app/documents:rw 在主机上,容器内部的uid/gid通常与容器外部的uid/gid相同(默认情况下,用户名称空间是关闭的,不会解决此问题,事实上,它们会使问题变得更糟)。请注意,这是uid/gid,而不是用户

我想创建具有卷和自定义组的docker容器。但在集装箱内的许可证上面临错误。所有文件都具有例如“自定义组”和“正常工作”,但文档文件夹默认具有根组。我认为这是由于数量。如何记录文件夹集“自定义组”。我的代码在下面

volumes:
  - /base/documents:/app/documents:rw

在主机上,容器内部的uid/gid通常与容器外部的uid/gid相同(默认情况下,用户名称空间是关闭的,不会解决此问题,事实上,它们会使问题变得更糟)。请注意,这是uid/gid,而不是用户名和组名,因为容器可以有自己的/etc/passwd和/etc/group文件

您需要使用与主机上文件的uid/gid匹配的uid/gid运行容器。这是通过compose文件的
user
部分或docker run命令行上的
-u
选项完成的,例如:

docker run -u "$(id -u):$(id -g)" -v /base/documents:/app/documents:rw ...
或在撰写文件中:

user: "1000:1000"
如果您的应用程序必须以root用户身份运行,那么处理这个问题的选项就会少得多。我自己的偏好是从一个入口点动态处理uid/gid,该入口点以root启动,在容器内修复uid/gid以匹配主机(查看卷所有者),然后从root将uid/gid放置到容器用户以运行应用程序。有关如何实现的更多详细信息,请参见my repo,包括nginx示例和fix perms脚本