Docker (NGINX, PHP, mySQL) and Windows - File Permissions


Docker (NGINX, PHP, mySQL) and Windows - File Permissions

我已经研究了几个小时的docker;我运行Windows 8.1作为主机,并使用boot2docker运行VirtualBox。

这是我的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权限的错误。

您应该使用volumes标签而不是volumes_from

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

请查看 docker 撰写文件文档

你的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

这是使用VirtualBox来宾添加与VirtualBox虚拟机共享Windows文件系统的方式的限制。

与VirtualBox VM共享的文件由VM中的用户"docker"和组"员工"拥有。VM (和容器) 中的进程无法更改这些文件的所有权。

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

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

-ulimit=[] ulimit 选项

GitHub 问题跟踪器上还有一个未解决的问题,其中提到了一些解决方法; #581 只有 root 可以写入 OSX 卷/无法更改其中的权限