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

MacOS下Docker部署Odoo时--dev参数报错求助

解决MacOS下Docker运行Odoo时--dev xml,reload的OSError问题

问题原因

MacOS的Docker Desktop基于HyperKit虚拟化,绑定卷(bind mount)的文件系统不支持Linux的inotify机制,而Odoo的--dev reload参数依赖该机制监听文件变化实现自动重载,因此触发OSError: Function not implemented错误。Ubuntu使用原生Linux内核,不存在这个限制,所以可以正常运行。

解决方案

方案1:移除reload参数

如果不需要自动重载功能,直接修改command行,去掉reload:

command: ["odoo","--dev","xml"]

这样仅启用XML热加载,不会触发文件监听逻辑,即可正常启动Odoo。

方案2:使用容器内文件系统(适合需要重载的开发场景)

如果需要自动重载功能,可将本地插件目录复制到容器内部,避免使用绑定卷:

  1. 修改Dockerfile,添加复制指令:
COPY ./extra-addons /mnt/custom-addons
  1. 移除docker-compose.yml中对应的绑定卷:
# 注释或删除这一行
# - ./extra-addons:/mnt/custom-addons

这样Odoo的文件监听可以正常工作,但本地修改后需要重新构建镜像。

方案3:使用文件同步工具(进阶)

可以使用docker-sync这类工具优化MacOS下的文件同步,让绑定卷支持类似inotify的功能,具体步骤:

  • 安装docker-sync
  • 配置sync.yml同步本地extra-addons目录到容器
  • 用docker-sync start配合docker-compose启动服务

这种方式既保留本地开发的实时修改,又能支持文件监听重载,但配置稍复杂。

内容的提问来源于stack exchange,提问作者Dương Ông Tùng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:36:23