我有一个 docker-compose 设置,可以在我的本地机器上完美运行,用于我的 symfony 项目,其中包含 nginx、php7-fpm 和 mysql。
我经常需要通过 composer 安装新的软件包,因此我只需将命令发送到我的 php-fpm 容器即可,如下所示:
docker-compose exec my-php-fpm-container composer install
问题是所有软件包都以 root 身份安装,所以每次安装时我都必须 chown。
我知道标志“--user”存在,但如果我使用它,它会引发以下错误:
错误:没有这样的服务:作曲家
有没有办法以本地机器用户的身份运行 docker-compose exec 命令,以便新安装的 composer 文件和文件夹以我的本地 linux 用户所有权而不是 root 身份自行创建?
答案1
经过一番研究,我才意识到我使用的 php7-fpm 映像内置了一些用户,例如 www-data(与我的实际框配置兼容)。因此,我只需要使用标志“--user www-data”以及命令即可在容器内使用作曲家并保留具有正确权限的文件。
docker-compose exec --user www-data mycontainer composer install