You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下运行Docker容器出现/vol/web/static权限被拒绝报错

根因排查
  • 你创建的user用户本身配置是正确的:adduser --disabled-password user命令执行时,Ubuntu会自动创建同名的user用户组,chown -R user:user /vol的属主配置不存在语法错误。
  • 最常见的出错场景是运行容器时挂载了外部卷到/vol路径:Dockerfile中执行的chown仅作用于镜像内置的目录,对挂载的宿主机目录、匿名/命名卷无效,挂载目录的权限继承宿主端的权限配置,就会出现容器内用户无访问权限的问题。
  • 次常见原因是构建镜像时使用了旧缓存,chown修改权限的步骤未实际执行,镜像内的/vol目录属主仍然是root。
  • 小概率是entrypoint.sh运行时动态创建了/vol/web/static下的子目录,未主动分配权限给user用户。
可落地解决方案
  1. 优先排除缓存问题,执行无缓存构建:
docker build --no-cache -t <你的镜像名> .
  1. 如果确认容器运行时挂载了外部目录到/vol,选择以下任一方案处理:
  • 宿主机端修改权限:先进入容器执行id user查看用户的UID、GID(默认Ubuntu新建普通用户UID/GID均为1000),在宿主机执行命令修改挂载目录权限:
sudo chown -R <查得的UID>:<查得的GID> <宿主机上的挂载目录路径>
  • 启动时动态修改权限:修改Dockerfile删除USER user配置,在entrypoint.sh开头添加权限修改逻辑,完成后切换到user用户执行业务进程:
#!/bin/sh
# 修正目录权限
chown -R user:user /vol
chmod -R 755 /vol/web
# 切换用户执行后续命令,替换为你实际的启动命令
exec su - user -c "python3 app.py"
  1. 如果是entrypoint.sh动态创建子目录导致的问题,在创建目录的逻辑后添加对应chown命令即可。

内容的提问来源于stack exchange,提问作者swamper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:06:01