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

问题描述:

我在OSX上运行Docker容器。容器包括:在Docker环境中运行Symfony时的文件夹权限

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

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

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

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

/var/www/var/chache 

,但随后不能写进去。 一旦缓存文件夹中创建,文件夹的权限设置为这样:

文件夹的
10344 drwxr-xr-x 1 1000 staff 68 Apr 15 00:33 cache 

老板是我的地方OSX用户,其中泊坞窗下运行。 我试图在Docker中更改Symfony的CLI中的文件夹权限或所有者,但它没有任何效果。 我试图在我的本地控制台下登录chmod -R 777,权限被更改,但Symfony在缓存文件夹内创建了文件夹,无法再次写入它。

我也试过在app_dev.php禁用缓存:

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

而且在config.yml:

twig: 
    cache:  false 

什么都没有效果,所以我在这里丢失。

任何想法如何解决问题?

+0

我觉得想后是有点与我的问题,但并没有真正解决这个问题:https://github.com/boot2 docker/boot2docker/issues/581 –

+0

刚刚在Ubuntu虚拟机箱中运行同样精确的Docker集合 - 一切正常,所以我猜测它与OSX-Docker权限问题有关 –

您还没有表现出你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 
+0

它对我有用。这种简单的解决方案!非常感谢您的帮助。 –

+0

您可以添加解释吗?所以'usermod'将'www-data'用户的ID设置为'1000',是吗?这是如何帮助解决许可问题?谢谢。 – Andru

查看官方文档here

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

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