错误:无法取消链接旧的'gulpfile.js'(权限被拒绝),而使用Docker Compose的开发环境

我正在开发一个PHP 7.1 Web应用程序使用以下内容:

  • Symfony 3.2
  • Docker Compose 1.12.0
  • Ubuntu 16.04 x64

当运行docker-compose up -d ,我的绑定安装项目目录的所有者和组被更改为root。 因此,每当我尝试提交更改或从我的远程git pull ,我会看到以下内容:

 error: unable to unlink old 'gulpfile.js' (Permission denied) fatal: Could not reset index file to revision 'HEAD^'. 

将项目目录的所有者和组更改回我的用户将删除该错误。 在使用Docker Compose进行开发时,是否有更简单的方法来防止这些用户权限冲突?

编辑
这是我目前的目录结构的概述:

 dockerComposeAndProjectDir/ |-- projectDirectory/ |-- dockerComposeDirectory/ |-- docker-compose.yml 

正如在这个泊坞窗(err … moby!)问题中提到的

如果您在绑定安装之前调整音量(在主机端),它将工作。
在这种情况下,你可以这样做:

 mkdir /tmp/www chown 101:101 /tmp/www docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www 

(假设101:101是您的容器中的www-data用户的UID:GID 。)

另一种可能性是做绑定安装,然后在容器内chown。

使用卷只是假设图像的数据在您的安装path。
使用绑定使用主机path的UID / GID。
容器中的UID / GID与主机上的UID / GID相同…即使用户/组名称不匹配,UID / GID也是重要的。

我提到OP Christian Elowsky到phpdocker-io/base-images/php/7.1 Dockerfile 。
OP的结论是:

php:7.1-fpm Dockerfile表示php-fpm服务将作为www-data运行,所以我对容器的用户是不正确的。
在初始绑定挂载之后调用音量似乎工作。
任何时候需要通过Docker Compose重新创build卷,我必须重新播放,这有点烦人,但它确实解决了我的问题。