Docker php:5.6-apache 403(因为路径组件上缺少搜索权限)

时间:2017-03-04 09:59:07

标签: php docker docker-compose

文件树:

├── docker-compose.yml 
├── Dockerfile 
└── www 
    └── index.html

Dockerfile:

FROM php:5.6-apache
ADD ./www /var/www/html/
WORKDIR /var/www/html/

搬运工-compose.yml

version: '2'
services:
  php5_6:
    build: .
    ports :
     - "80:80"
    volumes:
     - ./www:/var/www/html/

尝试启动docker

$ docker-compose up
[core:error] [pid 17] (13)Permission denied: [client 172.19.0.1:53514] AH00035: access to /index.html denied (filesystem path '/var/www/html/index.html') because search permissions are missing on a component of the path

在浏览器http://localhost 403页

怎么了?

3 个答案:

答案 0 :(得分:2)

我知道我的答案来晚了,但是其他人将从这个答案中得到一些帮助。

最后使用:z:Z选项以足够的权限挂载卷。确切地说,这将添加一个selinux规则chcon -Rt svirt_sandbox_file_t /path/to/volume

version: '2'
services:
php7_2:
  build: .
  ports :
   - "80:80"
  volumes:
   - "./www:/var/www/html/:Z"

了解更多信息,

  1. http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/
  2. Permission denied on accessing host directory in docker

答案 1 :(得分:0)

错误消息表明apache没有对html目录的适当访问权限。特别是除了读取权限之外,它可能还需要执行权限。

尝试将RUN chmod -R 755 /var/www/html/添加到Dockerfile。

答案 2 :(得分:0)

SELinux启用了问题。在/ etc / selinux / conf中禁用将解决它。