Git 错误:无法取消旧';gulpfile.js';使用Docker Compose for development environment时(权限被拒绝)

Git 错误:无法取消旧';gulpfile.js';使用Docker Compose for development environment时(权限被拒绝),git,symfony,docker,permissions,docker-compose,Git,Symfony,Docker,Permissions,Docker Compose,我正在使用以下工具开发一个PHP 7.1 web应用程序: error: unable to unlink old 'gulpfile.js' (Permission denied) fatal: Could not reset index file to revision 'HEAD^'. Symfony 3.2 Docker Compose 1.12.0 Ubuntu 16.04 x64 运行docker compose up-d时,我绑定的项目目录的所有者和组将更改为root。因此,

我正在使用以下工具开发一个PHP 7.1 web应用程序:

error: unable to unlink old 'gulpfile.js' (Permission denied)
fatal: Could not reset index file to revision 'HEAD^'.
  • 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
如本文所述

如果您在绑定装入卷之前将卷(在主机端)加载,它将工作。
在这种情况下,您可以执行以下操作:

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

另一种可能是进行绑定安装,然后在容器内进行chown

使用卷只需假设映像的装载路径上有数据即可。
使用绑定将使用主机路径的UID/GID。
容器中的UID/GID与主机上的UID/GID相同。。。即使用户名/组名不匹配,UID/GID在这里也很重要

我提到了这个问题。
OP得出结论:

php:7.1-fpm
Dockerfile表示
php-fpm
服务将作为
www-data
运行,因此我对容器的用户不正确。
在初始绑定装载后重新装载卷似乎有效。
每当Docker Compose需要重新创建该卷时,我都必须再次浏览它,这有点烦人,但它确实解决了我的问题


在运行
docker compose up-d
之前,我尝试使用用户的UID和GID从主机上浏览卷。但是,在up命令运行后,我的绑定挂载项目目录仍然以root作为所有者和组,除了在容器装入卷后使用入口点脚本手动更改所有者/组之外,我不确定是否有人找到了其他解决方案。@ChristianElowsky您需要确保主机和容器中的uid/gid相同。@ChristianElowsky自从您接受了答案后,我认为这是可行的。我使用的是PHP7.1-fpm容器,作为根用户运行。对于我的nginx容器,很容易确保www数据用户的UID与我的主机用户UID相同。我将
runusermod-u1000 www-data
放在Dockerfile的
CMD
前面。但是,将PHP7.1-fpm容器的
RUN usermod-u 1000 root
放在
CMD
之前失败,原因是
usermod:user root当前由进程1使用
错误:服务“php”无法生成:命令“/bin/sh-c usermod-u 1000 root”返回非零代码:8
,因为Docker可能已经在使用root。