由于权限是ROOT的导致访问项目出现无权限
情况一
volumes:
- ./wwwroot:/home/wwwroot
对应容器的目录权限
/home # ls -l
total 8
drwxr-sr-x 2 www-data www-data 4096 Jul 14 00:50 www-data
drwxrwxrwx 3 root root 4096 Aug 1 08:46 wwwroot
情况二
volumes:
- ./wwwroot:/home/www-data
对应容器的目录权限
/home # ls -l
total 4
drwxrwxrwx 3 root root 4096 Aug 1 08:46 www-data
容器本来就有目录www-data并权限也是www-data, 但为什么通过docker-compose编排启动后目录就成ROOT了?
如何在使用docker-compose保证容器原来的权限呢?
或者自定用户及权限?
经过测试,
wwwroot
目录是主机中的目录且权限也是ROOT, 主机是什么权限挂载到容器内也就是什么权限.启动容器并进入容器查的容器的www-data目录的www-data用户对应的uid及组为82:82, 所以只要把主机的
wwwroot
目录改为82:82即可.step1 进入容器
cat /etc/passwd
假设 www-data:www-data 对应为 82:82step2 回到主机
chown 82:82 -R ./wwwroot
step3 重新启动
docker-compose up -d