如何为PHP Docker镜像和主机VOLUME提供权限?

时间:2016-01-25 23:47:03

标签: php docker fedora

我正在使用官方PHP docker镜像,我试图将主机路径添加为VOLUME。我的目的是为了本地发展。

我的Dockerfile非常基本:

FROM php:5.6-apache
VOLUME ["/var/www/html/"]

然后在我的docker run命令中,我只是添加-v标志:

$ docker run -d -v ~/Workspace/website/:/var/www/html/ ...

然而,我在开始后得到403。如果我执行bash条目,我可以看到/ var / www / html被拒绝。我认为这与"外星人"来宾的用户/组。

日志:

  

[Tue Jan 26 00:29:38.182727 2016] [core:error] [pid 10](13)权限被拒绝:[client 192.168.5.1:37996] AH00035:访问/index.php被拒绝(文件系统路径& #39; /var/www/html/index.php')因为路径组件上缺少搜索权限   192.168.5.1 - - [26 / Jan / 2016:00:29:38 +0000]" GET /index.php HTTP / 1.1" 403 446" - " " Mozilla / 5.0(X11; Fedora; Linux x86_64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 47.0.2526.106 Safari / 537.36"

统计:

# stat html/
File: 'html/'
Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 3148160     Links: 26
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ UNKNOWN)   Gid: ( 1000/ UNKNOWN)
Access: 2016-01-25 23:17:57.096095138 +0000
Modify: 2016-01-26 00:28:10.274181924 +0000
Change: 2016-01-26 00:28:10.274181924 +0000

更新

我接受了Geany的建议,并将www-data组的gid更改为1000以匹配主机路径的gid。

$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ groupmod -g 1000 www-data
$ id www-data
uid=33(www-data) gid=1000(www-data) groups=33(www-data)
$ stat html/
File: 'html/'
Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 3148160     Links: 26
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ UNKNOWN)   Gid: ( 1000/ www-data)
Access: 2016-01-25 23:17:57.096095138 +0000
Modify: 2016-01-26 00:28:10.274181924 +0000
Change: 2016-01-26 00:28:10.274181924 +0000

但是,这仍然没有修复权限。我甚至改变了uid。

更新#2

我刚刚确认这在OS X上完美无缺。我原本试图让它在Fedora 23上运行。

1 个答案:

答案 0 :(得分:1)

您应该检查apache worker进程和chown源目录的用户和组。 另一种方法是改变apache worker用户的gid和uid。