Windows11下Docker Compose部署Odoo执行scaffold遇权限拒绝问题
解决Windows11下Odoo Docker容器生成模块权限拒绝问题
问题原因
Windows文件系统与Linux容器的权限模型不兼容,Odoo容器默认以odoo用户(UID 1000)运行,该用户没有权限写入Windows挂载到容器的/mnt/extra-addons目录(对应主机的./addons)。
解决方法
方法一:以root身份进入容器执行scaffold
- 用root用户进入容器bash:
docker-compose exec --user root web /bin/bash - 执行模块生成命令:
odoo scaffold test_module /mnt/extra-addons - (可选)生成后将模块目录权限转回odoo用户,避免后续运行异常:
chown -R odoo:odoo /mnt/extra-addons/test_module
方法二:主机预创建目录再调整容器内权限
- 在Windows主机的
./addons目录下手动创建test_module文件夹 - 以root身份进入容器:
docker-compose exec --user root web /bin/bash - 修改目录权限给odoo用户:
chown odoo:odoo /mnt/extra-addons/test_module - 执行scaffold命令生成模块内容:
odoo scaffold test_module /mnt/extra-addons
方法三:临时修改容器运行用户为root(不推荐长期使用)
修改docker-compose.yaml的web服务配置,添加user: root:
version: "3.1" services: web: image: odoo:16.0 user: root # 新增该行 depends_on: - db ports: - "8069:8069" volumes: - odoo-web-data:/var/lib/odoo - ./config:/etc/odoo - ./addons:/mnt/extra-addons - ./log:/var/log/odoo environment: - HOST=db - USER=odoo - PASSWORD=myodoo # db服务配置不变
重启容器后即可正常执行scaffold命令:
docker-compose down && docker-compose up -d docker-compose exec web /bin/bash odoo scaffold test_module /mnt/extra-addons
内容的提问来源于stack exchange,提问作者I NN_
相关产品推荐
相关产品推荐

