问题的提出
odoo使用docker进行开发、部署是十分方便的,在docker官网上对odoo有详细的介绍。但官网的示例中,并未有说明如何绑定多个插件路径。本文以两个插件/odoo-dev/OCA/account-financial-tools和/odoo-dev/OCA/reporting-engine为例介绍绑定的方法。
以下是官网其中一个示例:
version: '3.1'
services:
web:
image: odoo:14.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
environment:
- PASSWORD_FILE=/run/secrets/postgresql_password
secrets:
- postgresql_password
db:
image: postgres:13
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
secrets:
- postgresql_password
volumes:
odoo-web-data:
odoo-db-data:
secrets:
postgresql_password:
file: odoo_pg_pass
这是一个docker-compose.yml文件,可以把odoo和postgres两个容器连接起来运行,相当之方便的,执行:docker-compose up -d
即可。
上文中有一段语句:
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
就是我们今天要介绍的,odoo如何在docker的/mnt/extra-addons中绑定多个插件路径,顺便把odoo配置文件的绑定方法也在本文介绍。
解决方式
- ./addons:/mnt/extra-addons
绑定odoo配置文件及多个插件路径
volumes:
- ~/odoo-docker:/etc/odoo
- ~/odoo-dev/OCA/account-financial-tools:/mnt/account-financial-tools
- ~/odoo-dev/OCA/reporting-engine:/mnt/reporting-engine
volumes下面第一句 - ~/odoo-docker:/etc/odoo
是指将 ~/odoo-docker/odoo.conf绑定到容器里面默认的配置文件路径/etc/odoo;注意,绑定时是不需要写odoo.conf文件名的。
volumes下面第二、三句是两个OCA插件路径:
- ~/odoo-dev/OCA/account-financial-tools:/mnt/account-financial-tools
- ~/odoo-dev/OCA/reporting-engine:/mnt/reporting-engine
容器会自动创建文件夹/mnt/account-financial-tools和/mnt/reporting-engine
注意,不要这样写:/mnt/extra-addons/account-financial-tools 和 /mnt/extra-addons/reporting-engine ,odoo在创建数据库时会报错,找不到路径。
最后,odoo.conf里面的addons_path要写容器里面的插件路径。示例:
[options]
addons_path = /mnt/account-financial-tools, /mnt/reporting-engine, /usr/lib/python3/dist-packages/odoo/addons
最后的最后,有个小坑,addons_path中不要加 /var/lib/odoo/addons/12.0
这个路径上去,容器中默认是有这个路径的,加上去的话,odoo创建数据库时也会报错。