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

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

这是我的docker-compose.yml:</ p>

   mysql:
image:mysql
ports:
  • “6603:3306” environment: MYSQL_ROOT_PASSWORD:mysql MYSQL_USER:mysql fpm: image:php:7.0.2-fpm 卷 :
  • / c / Users / Administrator / www:/ var / www / html ports:
  • “9000:9000” links:
  • mysql nginx: image:nginx ports :
  • “80:80”
  • “443:443” 卷:
  • / c / Users / Administrator / www:/ var / www / html links:
  • fpm
    < / code> </ pre>

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

展开原文

原文

I've been looking into docker for a few hours; I'm running Windows 8.1 as the host machine, and VirtualBox with boot2docker.

This is my 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

This works fine (I can go to my docker ip address and see the nginx welcome page); although when I run mkdir for example (through php) it will give an error regarding windows permissions.

2个回答



您应该使用 volumes </ code>标签而不是 volumes_from </ code> </ p>


  • 卷</ code>可以将目录从主机挂载到容器
    和</ li>
  • volumes_from </ code>挂载其他服务的目录 或容器</ li>
    </ ul>

    请查看 docker-compose文档文档 </ p>

    您的docker-compose文件应如下所示:</ p>

      fpm:
    image:php:7.0.2-fpm
    卷:
    • / c / Users / Administrator / www:/ var / www / html ports:
    • “9000:9000” 链接:
    • mysql nginx: image:nginx ports:
    • “80:80”
    • “443:443” volumes_from:
    • fpm links:
    • fpm
      </ code> </ pre> </ div>

展开原文

原文

You should use volumes tag instead of volumes_from

  • volumes can mount directories from host machine to container and
  • volumes_from mounts directories from other services or containers

Please look at docker-compose file documentation

And your docker-compose file should look like this:

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

duanquezhan7268
duanquezhan7268 如果有人发现如何排序这个让我知道:)
4 年多之前 回复
douzun4443
douzun4443 我的意思是docker运行得很好,但是如果你用php尝试mkdir它就行不通。
4 年多之前 回复
douao1858
douao1858 无权创建目录
4 年多之前 回复
dousi7579
dousi7579 你得到的确切错误是什么?
4 年多之前 回复
dongsheng1238
dongsheng1238 拼写错误; 实际上它实际上是卷。 - 但仍然没有修复权限问题。
4 年多之前 回复

This is a limitation of the way the Windows filesystem is shared with the VirtualBox Virtual Machine, using VirtualBox guest additions.

Files shared with the VirtualBox VM are owned by user "docker" and group "staff" inside the VM. Processes inside the VM (and containers) cannot change ownership of those files.

As a workaround, you can try to run your container as the same uid/gid of those files (--user 1000:50);

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

--ulimit=[] Ulimit options

There's also an open issue on the GitHub issue tracker that mentions some workarounds; #581 Only root can write to OSX volumes / Can't change permissions within

dongzhuji1042
dongzhuji1042 您是否有机会知道我如何为每个容器运行docker-compose的bash脚本?
4 年多之前 回复
douwenan9849
douwenan9849 相同...警告:mkdir():第4行/var/www/html/index.php中的权限被拒绝尝试用户:“1000:50”和“root”也是..同样的问题:)
4 年多之前 回复
douzhuangna6906
douzhuangna6906 我会试着谢谢:)
4 年多之前 回复
doudian7996
doudian7996 您可以将user:添加到docker-compose.yml
4 年多之前 回复
dongzan7016
dongzan7016 似乎没有任何正确的解释如何解决这个问题:s
4 年多之前 回复
doushang2021
doushang2021 我无法运行docker-compose up --user; 我应该尝试别的吗?
4 年多之前 回复
drsqpko5286
drsqpko5286 这是一个不同的功能; 用户命名空间将允许您重新映射根用户守护程序范围(不是每个容器)。 --user功能已经在Docker中使用了很长一段时间。 我将添加一个文档链接
4 年多之前 回复
dou29106
dou29106 我们可以参考--user param用法吗? 至于我现在,docker将拥有v1.10的用户映射
4 年多之前 回复
dtt3399
dtt3399 我会试一试,谢谢:)
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐