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

Ile*_*Nea 5 php caching symfony docker

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

php bin/console cache:clear
Run Code Online (Sandbox Code Playgroud)

我总是有这个缓存问题:

Unable to create the storage directory (/var/www/app/var/cache/dev/profiler).
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下方法解决它:

chmod 777 -R var/cache/* var/logs/*
Run Code Online (Sandbox Code Playgroud)

但是我再次清除缓存后,问题依旧。有没有办法只添加一次权限,等我清除缓存后这个问题就解决了?

谢谢你。

Kam*_*her 6

确保在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/
Run Code Online (Sandbox Code Playgroud)

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


mbl*_*ann 2

有几种方法可以解决这个问题。就我个人而言,我习惯以本地使用的同一用户身份运行我的开发 docker 容器。

所以所有文件仅由一个 uid 拥有(在我的例子中为 1000)

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