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

Docker部署Odoo出现未知插件路径/root/.local/share/Odoo/addons/17.0

Odoo容器中未配置插件路径的来源与处理解析

我通过Docker Compose部署了Odoo(基于官方Dockerfile构建镜像,源码克隆自GitHub)与PostgreSQL镜像。odoo.conf中配置的插件路径如下:

[options]
addons_path = /opt/odoo/odoo/addons, /mnt/extra-addons, /opt/odoo/add-ons

但最近容器运行日志中出现了一条未配置的额外插件路径:

2024-08-26 07:50:00,106 1 INFO ? odoo: addons paths: ['/opt/odoo/odoo/addons', '/root/.local/share/Odoo/addons/17.0', '/mnt/extra-addons', '/opt/odoo/addons']

这个/root/.local/share/Odoo/addons/17.0路径来源不明,我不确定将该目录挂载为卷是否安全,怀疑它是缓存类目录。


我的配置文件

docker-compose.yml

version: '3.0'

services:
  odoo:
    build: .
    container_name: odoo
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
      - ./odoo:/opt/odoo
      - ./abc:/root/.local/share/Odoo
    environment:
      - HOST=db
      - USER=odoo
      - PASSWORD=odoo
      - POSTGRES_DB=postgres
    restart: always
    networks:
        - odoo-network
    command: ["-u","Hosting"]


  db:
    image: postgres:13
    container_name: db
    environment:
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_DB=postgres
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    restart: always
    ports:
      - "5433:5432"
    networks:
        - odoo-network
  pgadmin:
    image: dpage/pgadmin4
    container_name: pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
        - "5050:80"
    networks:
        - odoo-network


networks:
  odoo-network:

Dockerfile

FROM ubuntu:jammy

SHELL ["/bin/bash", "-xo", "pipefail", "-c"]

ENV LANG en_US.UTF-8

# Retrieve the target architecture to install the correct wkhtmltopdf package
ARG TARGETARCH

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        dirmngr \
        fonts-noto-cjk \
        gnupg \
        libssl-dev \
        node-less \
        npm \
        python3-magic \
        python3-num2words \
        python3-odf \
        python3-pdfminer \
        python3-pip \
        python3-phonenumbers \
        python3-pyldap \
        python3-qrcode \
        python3-renderpm \
        python3-setuptools \
        python3-slugify \
        python3-vobject \
        python3-watchdog \
        python3-xlrd \
        python3-xlwt \
        xz-utils \
        gcc-aarch64-linux-gnu \
        build-essential \
        libreadline-dev \
        zlib1g-dev \
        flex \
        bison && \
    if [ -z "${TARGETARCH}" ]; then \
        TARGETARCH="$(dpkg --print-architecture)"; \
    fi; \
    WKHTMLTOPDF_ARCH=${TARGETARCH} && \
    case ${TARGETARCH} in \
    "amd64") WKHTMLTOPDF_ARCH=amd64 && WKHTMLTOPDF_SHA=967390a759707337b46d1c02452e2bb6b2dc6d59  ;; \
    "arm64")  WKHTMLTOPDF_SHA=90f6e69896d51ef77339d3f3a20f8582bdf496cc  ;; \
    "ppc64le" | "ppc64el") WKHTMLTOPDF_ARCH=ppc64el && WKHTMLTOPDF_SHA=5312d7d34a25b321282929df82e3574319aed25c  ;; \
    esac \
    && curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_${WKHTMLTOPDF_ARCH}.deb \
    && echo ${WKHTMLTOPDF_SHA} wkhtmltox.deb | sha1sum -c - \
    && apt-get install -y --no-install-recommends ./wkhtmltox.deb \
    && rm -rf /var/lib/apt/lists/* wkhtmltox.deb

# install latest postgresql-client and libpq-dev
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main' > /etc/apt/sources.list.d/pgdg.list \
    && GNUPGHOME="$(mktemp -d)" \
    && export GNUPGHOME \
    && repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \
    && gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "${repokey}" \
    && gpg --batch --armor --export "${repokey}" > /etc/apt/trusted.gpg.d/pgdg.gpg.asc \
    && gpgconf --kill all \
    && rm -rf "$GNUPGHOME" \
    && apt-get update  \
    && apt-get install -y python3-dev python3-psycopg2 libpq-dev \
    && apt-get install libldap2-dev libsasl2-dev -y\
    && apt-get install --no-install-recommends -y postgresql-client libpq-dev \
    && apt-get install python3-cffi -y\
    && rm -f /etc/apt/sources.list.d/pgdg.list \
    && rm -rf /var/lib/apt/lists/* 
    

# Install rtlcss (on Debian buster)
RUN npm install -g rtlcss

COPY ./odoo /opt/odoo
COPY ./addons /mnt/extra-addons
COPY ./config /etc/odoo

RUN chown -R root /opt/odoo \
    && chown -R root /mnt/extra-addons  \
    && chown -R root /etc/odoo

# Install Python dependencies
RUN pip install  -r /opt/odoo/requirements.txt

ENTRYPOINT [ "python3","/opt/odoo/odoo-bin", "-c","/etc/odoo/odoo.conf" ]

问题解析与处理建议

1. 路径来源

/root/.local/share/Odoo/addons/17.0是Odoo的用户级默认插件目录:

  • Odoo会自动为运行用户添加这个搜索路径,用于存放通过Odoo界面安装的第三方插件(比如应用商店下载的插件)。
  • 因为你的容器中Odoo默认以root用户运行(Dockerfile未切换用户),所以路径指向root用户的本地共享目录。

2. 挂载该目录的安全性

挂载该目录是安全的,用途分两种情况:

  • 若你需要通过Odoo界面安装插件,挂载后可让插件数据持久化,容器重启不会丢失已安装的界面插件。
  • 若所有插件都通过本地目录(如/mnt/extra-addons)挂载部署,这个目录仅存储临时缓存或界面安装的插件,挂载与否不影响核心业务,但挂载可避免容器重启时丢失临时数据。

3. 控制或移除该路径的方法

如果不想让这个路径出现在插件搜索列表中,可通过以下方式处理:

  • 修改odoo.conf指定自定义数据目录:在[options]段添加data_dir参数,将用户插件目录转移到自定义路径:
    [options]
    addons_path = /opt/odoo/odoo/addons, /mnt/extra-addons, /opt/odoo/add-ons
    data_dir = /var/lib/odoo
    
    此时Odoo会将用户插件目录放在/var/lib/odoo/addons/17.0,可按需选择是否挂载该路径。
  • 切换非root运行用户:在Dockerfile中创建并切换到普通用户,避免使用root目录:
    RUN useradd -m odoo
    USER odoo
    
    此时用户级插件目录会变为/home/odoo/.local/share/Odoo/addons/17.0。
  • 直接忽略:该路径仅作为额外搜索路径存在,不会影响已配置的插件,若无特殊需求可无需处理。

内容的提问来源于stack exchange,提问作者Thịnh Thông Thái

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:02:33