我正在使用以下内容开发PHP 7.1 Web应用程序:
运行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
答案 0 :(得分:1)
如果在绑定安装之前
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重新创建卷,我都必须再次使用它,这有点烦人,但它确实解决了我的问题。