从卷更改目录的chmod

我正在尝试在容器中运行CakePHP 2应用程序。 我有一切设置和PHP正常工作,但有一个问题:/ var / www / app / tmp具有不正确的写入权限。 这个目录是从卷加载的

你已经看过CakePHP2.0文档了吗? 也许这是有用的:

一个常见的问题是app / tmp目录和子目录必须由Web服务器和命令行用户写入。 在UNIX系统上,如果您的Web服务器用户与命令行用户不同,则可以在项目中只运行一次以下命令,以确保正确设置权限:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1` setfacl -R -mu:${HTTPDUSER}:rwx app/tmp setfacl -R -d -mu:${HTTPDUSER}:rwx app/tmp 

资料来源: https : //book.cakephp.org/2.0/en/installation.html#permissions

如果您通过容器直通运行PHP,会发生这种情况。 在这种情况下,您将传递一个目录到具有预定义权限的应用程序。 你需要做的是定期确保权限正在从容器更新到Web服务器。 假设你的容器被称为web

docker执行web chown -R www-data / var / www / html

(/ var / www / html被replace为你的代码所在的地方)

例如。 这将使它在容器中工作得很好,但是如果你使用的是Linux的话,实际上可能会导致从主机操作系统访问数据的问题。 由于卷的文件本身被更新为主机操作系统没有的用户ID,因此我使用Laravel和PHP多次使用主机的卷传递来解决此问题。