每次清除Docker容器内的缓存时无法创建存储目录

时间:2018-12-02 19:17:55

标签: php symfony docker caching

我正在使用docker在Symfony 3.4应用程序中工作。 问题是我进入容器并做

php bin/console cache:clear

我总是遇到以下缓存问题:

Unable to create the storage directory (/var/www/app/var/cache/dev/profiler).

我知道我可以使用以下方法解决该问题:

chmod 777 -R var/cache/* var/logs/*

但是在我再次清除缓存后,问题仍然存在。 有一种方法可以只添加一次权限,然后在清除缓存后解决此问题?

谢谢。

2 个答案:

答案 0 :(得分:3)

确保在 Dockerfile 中创建Symfony所需的缓存目录并为其设置正确的权限:

USER root
# RUN usermod -u 1000 www-data    # fix the UID
RUN mkdir -p var/cache/prod var/cache/dev var/cache/test var/log \
   && chown -R www-data:www-data var/ \
   && chmod -R ug+rwX var/

然后重建图像,默认情况下,对var的权限应该没问题,并且www-data应该能够写入缓存?

答案 1 :(得分:0)

有几种解决方法。我个人使用运行docker容器的方式与本地使用的用户相同。

因此,所有文件仅由一个uid(在我的情况下为1000)拥有

另一种解决方法是/ var / cache上的ACL标志,以在创建时自动继承目录权限。此处描述:https://symfony.com/doc/3.4/setup/file_permissions.html