我正在使用官方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上运行。
答案 0 :(得分:1)
您应该检查apache worker进程和chown源目录的用户和组。 另一种方法是改变apache worker用户的gid和uid。