错误:无法取消链接旧的'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卷,我必须重新播放,这有点烦人,但它确实解决了我的问题。