我在Docker容器中遇到了一个目录挂载问题:
- Alpine Linux 包含用户xfs(33)和组xfs(33),没有www-data
- 主机上的文件由www-data(33)拥有
- 我需要让nginx能够访问这些文件,而nginx位于nginx:alpine docker镜像内部
这是一个全栈情况:我正在使用服务堆栈使文件在本地局域网中可用。 堆栈使用nginx:alpine,镜像可用 - 因此我无法轻松修改Dockerimage。
是否有任何方法可以防止Alpine Linux镜像中的xfs获得用户和组ID 33?
我尝试在docker-compose.yml
中设置PUID和PGID,但它不起作用(我也很难理解):
services:
celeryworker:
environment:
- PUID=33
- PGID=33
最小可重现示例:
cd /mnt/nfs/folder1
ls -alh
>-rwxr-xr-x 1 www-data www-data 3.5M Sep 21 15:41 '02 - track.mp3'
ls -alhn
>-rwxr-xr-x 1 33 33 3.5M Sep 21 15:41 '02 - track.mp3'
less /etc/passwd | grep www-data
>www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
version: "3"
services:
celeryworker:
restart: unless-stopped
image: funkwhale/funkwhale:1.0.1
networks:
- default
depends_on:
- postgres
- redis
command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=0
environment:
- C_FORCE_ROOT=true
volumes:
- "/mnt/nfs/:/music:ro"
docker exec -it funkwhale_celeryworker_1 /bin/bash
cd /music/folder1/
ls -alh
>-rwxr-xr-x 1 xfs xfs 3.4M Sep 21 13:41 '02 - track1.mp3'
ls -alhn
>-rwxr-xr-x 1 33 33 3.4M Sep 21 13:41 '02 - track1.mp3'
su xfs
>This account is not available
less /etc/passwd | grep xfs
>xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
folder1
没有开放给所有用户读取的权限!一旦我使用了chmod 755 folder1,容器内部就授予了权限,即使是用户xfs也可以访问。 - Alex