在Docker环境中运行Symfony时的文件夹权限

我在OSX上运行一个Docker容器。 容器包括:

  1. Symfony的
  2. Nginx的
  3. PHP-FPM
  4. Redis的

这是运行Symfony应用程序的一个非常常见的设置。

我遇到了一些奇怪的文件夹权限问题,我得到这个错误: 错误截图

我的Symfony可以创build一个文件夹

/var/www/var/chache 

但是它不能写入它。 一旦创build了caching文件夹,文件夹权限就设置为:

 10344 drwxr-xr-x 1 1000 staff 68 Apr 15 00:33 cache 

该文件夹的所有者是我的本地OSX用户,Docker正在运行。 我试图在Docker中更改Symfony CLI中的文件夹权限或所有者,并且没有任何效果。 我试图在我的本地控制台chmod -R 777 ,权限被改变,但是然后Symfony创build文件夹里面的caching文件夹,不能再写入它。

我也尝试在app_dev.php中禁用caching:

 $kernel = new AppKernel('dev', true); // $kernel->loadClassCache(); $request = Request::createFromGlobals(); 

在config.yml中:

 twig: cache: false 

没有任何效果,所以我迷失在这里。

任何想法如何解决一个问题?

你没有向你展示Dockerfile,因为我可以给你一个PHP-FPM容器的例子,这个问题是固定的:

此行正在修复权限错误: usermod -u 1000 www-data

 FROM debian:jessie RUN apt-get update RUN apt-get install -y curl \ mcrypt \ && apt-get install -y php5 \ php5-fpm \ php5-cli \ php-pear \ php5-common \ php5-igbinary \ php5-json \ php5-mysql \ php5-mysqlnd \ php5-gd \ php5-curl \ php5-dev \ php5-sqlite \ php5-memcached \ php5-memcache \ && usermod -u 1000 www-data EXPOSE 9000 

在这里查看官方文档。

我在Ubuntu上解决权限问题我执行这个命令:

 $ sudo setfacl -R -mu:www-data:rwx -mu:`whoami`:rwx app/cache app/logs $ sudo setfacl -dR -mu:www-data:rwx -mu:`whoami`:rwx app/cache app/logs