Docker(NGINX,PHP,mySQL)和Windows - 文件权限

时间:2016-01-27 18:48:30

标签: php mysql nginx docker docker-compose

我一直在寻找码头工人几个小时;我正在运行Windows 8.1作为主机,而VirtualBox运行boot2docker。

这是我的docker-compose.yml:

mysql:
    image: mysql
    ports: 
        - "6603:3306"    
    environment:
        MYSQL_ROOT_PASSWORD: mysql
        MYSQL_USER: mysql
fpm:
    image: php:7.0.2-fpm
    volumes:
        - /c/Users/Administrator/www:/var/www/html
    ports:
        - "9000:9000"
    links:
        - mysql
nginx:
    image: nginx 
    ports:
        - "80:80"
        - "443:443"
    volumes:
        - /c/Users/Administrator/www:/var/www/html
    links:
        - fpm

这很好用(我可以访问我的docker ip地址并查看nginx欢迎页面);虽然当我运行mkdir时(例如通过php),它会给出关于Windows权限的错误。

2 个答案:

答案 0 :(得分:0)

您应该使用volumes代码而不是volumes_from

  • volumes可以将目录从主机安装到容器 和
  • volumes_from从其他服务或容器安装目录

请查看docker-compose file documentation

你的docker-compose文件应如下所示:

fpm:
    image: php:7.0.2-fpm
    volumes:
        - /c/Users/Administrator/www:/var/www/html
    ports:
        - "9000:9000"
    links:
        - mysql
nginx:
    image: nginx 
    ports:
        - "80:80"
        - "443:443"
    volumes_from:
        - fpm
    links:
        - fpm

答案 1 :(得分:0)

使用VirtualBox guest虚拟机添加功能限制了Windows文件系统与VirtualBox虚拟机的共享方式。

与VirtualBox VM共享的文件由用户“docker”和VM内的“staff”组拥有。 VM(和容器)内的进程无法更改这些文件的所有权。

作为解决方法,您可以尝试将容器作为这些文件的uid / gid运行(--user 1000:50);

-u, --user=""                 Username or UID (format: <name|uid>[:<group|gid>])

- ulimit = [] Ulimit选项

GitHub问题跟踪器上还有一个未解决的问题,提到了一些解决方法; #581 Only root can write to OSX volumes / Can't change permissions within