我正在使用官方 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 权限被拒绝。我认为这与 guest 的“外星人”用户/组有关。
日志:
[Tue Jan 26 00:29:38.182727 2016] [core:error] [pid 10] (13)Permission denied: [client 192.168.5.1:37996] AH00035: access to /index.php denied (filesystem path '/var/www/html/index.php') because search permissions are missing on a component of the path 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, like 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 上运行。
最佳答案
您应该检查 apache 工作进程的用户和组以及 chown 源目录。 另一种方法是更改 apache worker 用户的 gid 和 uid。
关于php - 如何提供对 PHP Docker 镜像和主机卷的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004634/