Windows+VirtualBox+Ubuntu+Docker+Nginx权限问题咨询
Windows-Ubuntu共享文件夹配合Docker Compose的权限问题
背景情况
我遇到了一个权限相关的问题,先跟大家说下我的环境和配置:
- Windows宿主机和Ubuntu虚拟机之间设置了共享文件夹,权限配置为:Windows端是
777,Ubuntu端是770 - 我用以下
docker-compose.yml配置运行Nginx和PHP-FPM服务,但容器里的进程似乎无法正常访问共享文件夹里的代码:
version: '2' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./sf_compartida/codigo:/code - ./site.conf:/etc/nginx/conf.d/default.conf networks: - code-network php: image: php:fpm volumes: - ./sf_compartida/codigo:/code networks: - code-network networks: code-network: driver: bridge
另外我的Nginx配置文件site.conf内容不全,开头是ser...,不过核心问题应该集中在共享文件夹的权限映射上。
我整理的可能解决思路
- 调整Ubuntu端共享文件夹的组权限:Ubuntu端共享文件夹是
770权限,只有所有者和所属组用户能读写。但Docker容器里的Nginx默认用nginx用户(UID 101),PHP-FPM默认用www-data用户(UID 33),这些用户大概率不在共享文件夹的所属组里。可以先查看共享文件夹的所属组:
然后把对应用户添加到该组:ls -ld ./sf_compartida/codigosudo usermod -aG <共享文件夹组名> www-data - 在Docker Compose中指定运行用户:让容器进程以和共享文件夹权限匹配的用户运行,比如给PHP服务添加
user: "33:33"(对应www-data的UID和GID),Nginx服务添加user: "101:101",这样容器内进程的权限就能和共享文件夹的770权限兼容:php: image: php:fpm user: "33:33" volumes: - ./sf_compartida/codigo:/code networks: - code-network - 临时调整权限排查问题:如果只是临时确认是不是权限导致的,可以把Ubuntu端共享文件夹权限改成
775,测试容器能否正常访问,但这个配置不建议长期使用。
内容的提问来源于stack exchange,提问作者jmunozco
相关产品推荐
相关产品推荐

