我是Docker的新手,并且已经设置了一个Dockerfile和compose文件来启动服务器进行测试。
当运行centos:6.6图像,其中一个卷映射到我在OSX中的用户目录并安装httpd时,我的var / www / html用户是1000:ftp而不是root:root。
我需要将文件夹更改为用户apache:apache以便能够将文件上传到它并且无法获得chown或chmod在var / www / html下的任何文件夹中进行任何更改。
我知道这与我将我的卷映射到我的OS驱动器上的某个位置有关。
所以,我的问题是......
是否有设置它以便我可以更改var / www / html的所有权?
答案 0 :(得分:2)
新发布的Docker for Mac has a different behavior有关所有权:
最初,任何请求对象的所有权元数据的容器化进程都会被告知其uid和gid拥有该对象。当任何容器化过程改变共享文件系统对象的所有权时,例如,使用chown,新的所有权信息将保留在对象的com.docker.owner扩展属性中。 [...]
Michael的MPMusicPlayerController
脚本可以像以下一样进行调整,以便跨平台一致地工作:
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
类型。
您可以查看API Platform的fuse.osxfs
脚本,找到一个完整的示例:https://github.com/api-platform/api-platform/blob/master/docker/apache/start_safe_perms
答案 1 :(得分:1)
改为使用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"