我正在使用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/*
但是在我再次清除缓存后,问题仍然存在。 有一种方法可以只添加一次权限,然后在清除缓存后解决此问题?
谢谢。
答案 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