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

时间:2017-04-24 00:39:57

标签: git symfony docker permissions 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^'.

Changing the project directory's owner and group返回给我的用户删除了错误。在使用Docker Compose进行开发时,是否有更简单的方法来防止这些用户权限冲突?

修改
以下是我当前目录结构的概述:

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

1 个答案:

答案 0 :(得分:1)

如此docker (err... moby!) issue

中所述
  

如果在绑定安装之前chown卷(在主机端),它将起作用   在这种情况下,您可以这样做:

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

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

     

另一种可能性是进行bind-mount,然后在容器内部进行chown。

     

使用卷只是假设图像在您安装到的路径上有数据   使用绑定使用主机路径的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重新创建卷,我都必须再次使用它,这有点烦人,但它确实解决了我的问题。