Docker-compose在安装的卷上设置用户和组

我正在尝试在docker-compose中将一个卷装入到apache映像中。 问题是,我的泊坞窗中的apache在www-data:www-data下运行,但挂载的目录是在root:root下创build的。 我如何指定挂载目录的用户?

我试图运行命令setupApacheRights.shchown -R www-data:www-data /var/www但是它说chown: changing ownership of '/var/www/somefile': Permission denied

 services: httpd: image: apache-image ports: - "80:80" volumes: - "./:/var/www/app" links: - redis command: /setupApacheRights.sh 

我希望能够指定它将被安装的用户。 有没有办法?

首先确定www-data用户的uid:

 $ docker exec DOCKER_IMAGE_ID id uid=100(www-data) gid=101(www-data) groups=101(www-data) 

然后,在本地机器上,使用uid(本例中为100)更改挂载目录的所有者:

 chown -R 100 ./ 

dynamic扩展

如果你使用的是docker-compose你可以像这样去做:

 $ docker-compose exec SERVICE_NAME id uid=100(www-data) gid=101(www-data) groups=101(www-data) $ chown -R 100 ./ 

你可以把它放在一个单线上:

 $ chown -r $(docker-compose exec SERVICE_NAME id -u) ./ 

-u标志只会将uid打印到标准输出。