dram.me

搭建Odoo Docker环境

Odoo的Docker环境启用主要包括三步,数据库启动、Odoo启动以及配置调整。

数据库

PostgreSQL数据库实例的启动只需要指定超级用户的账号密码,以及默认创建的数据库名称即可:

docker run -d --name db -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres postgres:13.3-alpine

Odoo

启动Odoo实例时需要考虑以下几点:

  • Web端口映射;
  • 数据库关联;
  • 扩展目录指定;
  • 限制外网访问服务;
  • 启用日志。
docker run -d \
    --name odoo \
    --volume /path/to/odoo-addons:/mnt/extra-addons \
    --add-host db:172.17.0.2 \
    --add-host iap-services.odoo.com:127.0.0.1 \
    --add-host partner-autocomplete.odoo.com:127.0.0.1 \
    --add-host services.openerp.com:127.0.0.1 \
    odoo:14.0 \
    -- \
    --logfile /var/log/odoo/odoo-server.log

配置

  • 静态文件存储路径

    Odoo默认将网页静态文件、附件等存放在文件系统中,也就是对应于Odoo的Docker实例的磁盘,备份数据时需要留意。如果需要把所有数据存储在数据库中,可以在启动Odoo实例后,执行以下命令:

    sed -i "s|'ir_attachment.location', 'file'|'ir_attachment.location', 'db'|" /usr/lib/python3/dist-packages/odoo/addons/base/models/ir_attachment.py

    如果系统已经运行一段时间,文件系统中已经存在部分静态文件,可以在Odoo的Python命令行中执行以下代码(测试发现迁移的数据不完整,待查):

    env['ir.config_parameter'].set_param('ir_attachment.location', 'db')
    env.cr.commit()
    env['ir.attachment'].force_storage()
  • HTML编辑器配置

    默认Odoo的HTML编辑器在非调式模式下不可以基于源码编辑,可通过执行以下命令调整:

    sed -i "s|config.isDebug()|true|" /usr/lib/python3/dist-packages/odoo/addons/web_editor/static/src/js/backend/field_html.js
  • 优化笔记UI

    隐藏左侧的“完成”和右侧的“计划”按钮,以及左侧的tags标签(暂不清楚什么条件下会显示,当前影响排版):

    sed -i \
        -e "/oe_kanban_global_click_edit/{n;N;d}" \
        -e "/oe_kanban_colorpicker/{n;n;n;N;N;N;d}" \
        -e "/oe_kanban_content/{n;n;n;N;N;d}" \
        /usr/lib/python3/dist-packages/odoo/addons/note/views/note_views.xml

    清空笔记初始stage:

    echo "<odoo><data></data></odoo>" >/usr/lib/python3/dist-packages/odoo/addons/note/data/note_data.xml
  • 设置用户登录起始页

    基于12469ef这一提交,可以通过调整sequence号将notes菜单提前,以作为起始页:

    sed -i 's/sequence="15"/sequence="0"/' /usr/lib/python3/dist-packages/odoo/addons/note/views/note_views.xml
  • 设置文本样式

    sed -i -e 's/margin-bottom: 1rem/margin-bottom: 0/' -e 's/$headings-margin-bottom/0/' /usr/lib/python3/dist-packages/odoo/addons/web/static/lib/bootstrap/scss/_reboot.scss