php - docker-compose volumes 容器内权限会变为root所有?

查看:260
本文介绍了php - docker-compose volumes 容器内权限会变为root所有?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

由于权限是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:82

step2 回到主机 chown 82:82 -R ./wwwroot

step3 重新启动 docker-compose up -d

这篇关于php - docker-compose volumes 容器内权限会变为root所有?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆