【问题标题】:Docker nginx php permissions issueDocker nginx php权限问题
【发布时间】:2021-04-22 08:40:51
【问题描述】:

我刚刚学习 Docker 并承担了一个小宠物项目,想知道是否可以使用 docker/nginx/php 进行许可。我正在尝试将我的旧 IIS-Windows/php/MySql 项目转换为 Docker/nginx/php/mysql

我大部分时间都在那里,并且链接了 3 个容器并且一切都运行良好,除了这个系统有一个文件上传/查看/删除组件。我希望将“文件”存储在根 html 文件夹之外,在这种情况下是“/usr/share/nginx/html”。

我的 Linux 机器有一个 120 GB 的 ssd,我的 os 和 docker 解决方案就在其中。我也有一个 ~9 TB RAID(4 个 3TB 驱动器 mdadm raid 5)安装到系统上,这就是我想存储文件夹“文件”并允许我的 docker 解决方案从PHP 网页界面。我似乎无法让它工作。

我已将这些卷映射添加到我的 docker-compose:

volume:
  - ./code:/usr/share/nginx/html
  - /mnt/md0/files:/usr/share/nginx/html/files

其中“代码”当然是我的 php 代码,它似乎可以在文件夹结构中可见的“文件”文件夹中工作,但我无法写入它,php 权限被拒绝错误。我跑了:

docker exec -it [myNginxContainer] chown -Rf www-data.www-data /usr/share/nginx/html/files

这确实将我在 raid 中的文件夹的实际所有权更改为该文件夹,但仍无法从 php.ini 写入它。 (如果我将实际的“文件”文件夹放在代码目录中:/usr/share/nginx/html/ 并删除 docker-compose 中的卷映射,那么这样做确实可以按我的意愿工作,但我希望它在 raid 上)

我什至尝试将文件夹权限设置为全开:

chmod 777 /mnt/md0/files/

只是看看这是否有帮助,但它没有。毕竟,raid 上该文件夹的权限如下所示:

drwxrwxrwx 2 www-data www-data  4096 Jan 17 23:41 files

好像应该是可写的吧?

在我再把头发扯掉之前,这样的事情可能吗?在某些时候,我什至可能希望该“文件”位置成为一个已挂载的网络位置,但现在至少是一个“external-to-my-html”文件夹位置。

【问题讨论】:

  • 你可以通过 www-data 或 root 用户从 docker 容器中手动写入吗?
  • 另外,您主机上的文件夹的权限是什么以及您从哪个用户运行您的容器?
  • 我能够以 root 身份从容器内写入“files”文件夹,这是我所知道的容器中唯一可用的用户。 exec -it /bin/bash 以 root 身份将您放入该容器中,我可以从该 root 提示符将文件“触摸”到该目录中。主机上文件夹的权限在原始帖子中 - www-data 用户作为所有者(nginx 网络用户),写入权限完全开放。我从我的常规用户帐户运行容器。
  • 您能否展示您的 Dockerfile 以及您在正常运行时如何调用它?
  • 感谢@TerrySposato 的帮助我想通了。我没有将卷添加到我的 php docker 服务以及我的 nginx 服务中。之后,一切都按照我在我的问题中提出的那样进行。

标签: php linux docker nginx


【解决方案1】:

【讨论】:

  • 谢谢,这很有帮助且内容丰富。
猜你喜欢
  • 2020-06-21
  • 2018-07-17
  • 2020-06-26
  • 2016-06-10
  • 1970-01-01
  • 2021-03-04
  • 2016-05-04
  • 2021-01-04
  • 2019-03-16
相关资源
最近更新 更多