在docker工人不更改用户到根目录

我对Docker相当陌生,并且已经设置了一个Dockerfile和一个组合文件来启动一个服务器进行testing。

当在OSX中运行映射到我的用户目录并安装httpd的卷的6.6映像时,var / www / html的用户是1000:ftp而不是root:root。

我需要将文件夹更改为用户apache:apache,以便能够上传文件,并且无法使用chown或chmod在var / www / html下的任何文件夹中进行更改。
我知道这与我的体积映射到我的操作系统驱动器上的位置。

所以,我的问题是..

无论如何设置它,以便我可以更改var / www / html的所有权?

问题587或581显示您不能更改主机挂载的目录的所有权。

改为改变你的Apache启动脚本,以便用正确的id(1000)代替apache:apache来启动它。
请参阅Michael A. Smith的“ apache / start_safe_perms ”

主要是:

read owner group owner_id group_id < <(stat -c '%U %G %u %g' .) adduser --system --uid=$(stat -c %u .) "$owner" 

新发布的Docker for Mac在拥有权方面有不同的行为 :

最初,任何请求所有权对象的元数据的容器化过程都被告知它的uid和gid拥有这个对象。 当任何容器化过程改变了共享文件系统对象的所有权时,例如使用chown,新的所有权信息被保存在对象的com.docker.owner扩展属性中。 […]

Michael的start_safe_perms脚本可以像下面那样进行修改,以便在不同的平台上一致地工作:

 if [[ -n $(mount -t fuse.osxfs) ]]; then chown -R www-data:www-data . 2> /dev/null # ... else read owner group owner_id group_id < <(stat -c '%U %G %u %g' .) adduser --system --uid=$(stat -c %u .) "$owner" # ... fi 

它基本上检测如果安装卷如果fuse.osxfstypes。

您可以检查API Platform的start_safe_perms脚本以获得完整的工作示例: https : //github.com/api-platform/api-platform/blob/master/docker/apache/start_safe_perms