Docker部署Odoo无法更新应用列表及数据库连接超时求助
问题排查与解决方案
一、解决数据库连接超时问题
1. 替换静态IP为Docker服务名
Docker Compose会自动创建内部网络,服务间通过服务名称即可访问,静态IP(如172.17.0.2)会随容器重启变化,导致连接失败。执行更新命令时改用服务名(假设Postgres服务名为db):
/usr/bin/odoo -p 8071 --db_host=db --db_user=odoo --db_password=odoo -d odoo -u estate
2. 确认Docker Compose配置正确性
检查docker-compose.yml中数据库与Odoo服务的环境变量配置,确保信息匹配:
services: db: image: postgres:13 environment: - POSTGRES_USER=odoo - POSTGRES_PASSWORD=odoo - POSTGRES_DB=postgres volumes: - postgres_data:/var/lib/postgresql/data odoo: image: odoo:latest depends_on: - db ports: - "8070:8069" environment: - HOST=db - USER=odoo - PASSWORD=odoo volumes: - ./extra-addons:/mnt/extra-addons - data:/var/lib/odoo - ./config:/etc/odoo volumes: postgres_data: data:
重点确保Odoo的HOST参数指向Postgres服务名,且数据库用户、密码与Postgres配置完全一致。
二、修复应用列表无响应问题
1. 修正模块目录结构
Odoo要求每个自定义模块单独存放在专属文件夹中,当前目录结构错误,需调整为:
. ├── config │ └── odoo.conf ├── docker-compose.yml └── extra-addons └── estate ├── __init__.py └── __manifest__.py
将__init__.py和__manifest__.py移动到extra-addons/estate/子目录下。
2. 验证模块初始化文件
确保estate/__init__.py内容合法(空文件或基础导入语句均可):
# 空文件即可满足基础模块要求
3. 重新加载模块并更新应用列表
- 重启Odoo容器,让新的模块目录生效:
docker-compose restart odoo
- 进入调试模式(
http://localhost:8070/web?debug=1),点击右上角「更新应用列表」按钮。 - 在应用搜索栏输入
estate,即可找到自定义模块。
三、额外检查项
- 修复目录权限,确保Odoo容器能读取模块文件:
chown -R 1000:1000 ./extra-addons
(Odoo容器默认用户UID/GID为1000)
- 完善
odoo.conf的插件路径配置,包含官方默认插件目录:
[options] addons_path = /usr/lib/python3/dist-packages/odoo/addons,/mnt/extra-addons data_dir = /var/lib/odoo
内容的提问来源于stack exchange,提问作者edors
相关产品推荐
相关产品推荐

