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

Ubuntu下基于Docker搭建多版本Odoo开发环境分步指引请求

Ubuntu下Docker搭建多版本Odoo开发环境分步指南

一、前置准备:安装Docker与Docker Compose

1. 系统更新与依赖安装

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

2. 安装Docker

# 移除旧版本(如果存在)
sudo apt remove docker docker-engine docker.io containerd runc -y

# 添加Docker GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker官方源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

# 验证安装
docker --version

3. 安装Docker Compose

# 下载最新稳定版(可替换为对应版本号)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

4. 配置Docker非root用户(可选)

避免每次操作都输入sudo:

sudo usermod -aG docker $USER
# 重新登录后生效

二、多版本Odoo项目结构与Docker Compose配置

1. 创建项目目录结构

mkdir -p odoo-multi-version/{odoo14,odoo16,odoo17}/{addons,config,data}
mkdir -p odoo-multi-version/postgres/{pg14,pg16,pg17}
cd odoo-multi-version
  • 每个Odoo版本对应独立目录:odooX下存放自定义插件(addons)、配置文件(config)、本地数据(data)
  • 每个Odoo版本搭配兼容的PostgreSQL版本(Odoo14用PG12+,Odoo16用PG14+,Odoo17用PG15+)

2. 编写docker-compose.yml

在项目根目录创建docker-compose.yml,每个Odoo版本作为独立服务:

version: '3.8'

services:
  # Odoo 14 服务
  odoo14:
    image: odoo:14.0
    container_name: odoo14-dev
    ports:
      - "14069:8069"
      - "14072:8072" # 长连接端口
    volumes:
      - ./odoo14/addons:/mnt/extra-addons
      - ./odoo14/config/odoo.conf:/etc/odoo/odoo.conf
      - ./odoo14/data:/var/lib/odoo
    environment:
      - HOST=postgres14
      - USER=odoo14
      - PASSWORD=odoo14dbpass
    depends_on:
      - postgres14
    restart: unless-stopped

  # PostgreSQL 14 服务(对应Odoo14)
  postgres14:
    image: postgres:14
    container_name: postgres14-dev
    ports:
      - "54314:5432"
    volumes:
      - ./postgres/pg14:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=odoo14
      - POSTGRES_PASSWORD=odoo14dbpass
      - POSTGRES_DB=postgres
    restart: unless-stopped

  # Odoo 16 服务
  odoo16:
    image: odoo:16.0
    container_name: odoo16-dev
    ports:
      - "16069:8069"
      - "16072:8072"
    volumes:
      - ./odoo16/addons:/mnt/extra-addons
      - ./odoo16/config/odoo.conf:/etc/odoo/odoo.conf
      - ./odoo16/data:/var/lib/odoo
    environment:
      - HOST=postgres16
      - USER=odoo16
      - PASSWORD=odoo16dbpass
    depends_on:
      - postgres16
    restart: unless-stopped

  # PostgreSQL 16 服务(对应Odoo16)
  postgres16:
    image: postgres:16
    container_name: postgres16-dev
    ports:
      - "54316:5432"
    volumes:
      - ./postgres/pg16:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=odoo16
      - POSTGRES_PASSWORD=odoo16dbpass
      - POSTGRES_DB=postgres
    restart: unless-stopped

  # Odoo 17 服务
  odoo17:
    image: odoo:17.0
    container_name: odoo17-dev
    ports:
      - "17069:8069"
      - "17072:8072"
    volumes:
      - ./odoo17/addons:/mnt/extra-addons
      - ./odoo17/config/odoo.conf:/etc/odoo/odoo.conf
      - ./odoo17/data:/var/lib/odoo
    environment:
      - HOST=postgres17
      - USER=odoo17
      - PASSWORD=odoo17dbpass
    depends_on:
      - postgres17
    restart: unless-stopped

  # PostgreSQL 17 服务(对应Odoo17)
  postgres17:
    image: postgres:17
    container_name: postgres17-dev
    ports:
      - "54317:5432"
    volumes:
      - ./postgres/pg17:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=odoo17
      - POSTGRES_PASSWORD=odoo17dbpass
      - POSTGRES_DB=postgres
    restart: unless-stopped

三、多版本核心配置细节处理

1. 编写每个版本的odoo.conf

以Odoo14为例,在odoo14/config/下创建odoo.conf:

[options]
; 数据库配置
db_host = postgres14
db_port = 5432
db_user = odoo14
db_password = odoo14dbpass

; 插件路径:官方插件 + 自定义插件
addons_path = /usr/lib/python3/dist-packages/odoo/addons,/mnt/extra-addons

; 管理员密码
admin_passwd = your_admin_passwd

; 开发模式配置
dev_mode = True
log_level = debug

; 其他配置
xmlrpc_port = 8069
longpolling_port = 8072
data_dir = /var/lib/odoo

注意:每个版本的odoo.conf需对应修改db_host、db_user、db_password等参数,比如Odoo16对应postgres16。

2. 处理Wkhtmltopdf依赖

官方Odoo镜像已预装对应版本的Wkhtmltopdf:

  • Odoo14:wkhtmltopdf 0.12.5
  • Odoo16+:wkhtmltopdf 0.12.6
    若需自定义版本,可通过自定义Dockerfile构建镜像:
# 以Odoo14为例
FROM odoo:14.0

USER root
# 卸载预装版本
RUN apt remove -y wkhtmltopdf
# 安装指定版本
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.5-1/wkhtmltox_0.12.5-1.bionic_amd64.deb
RUN dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb || apt install -f -y
USER odoo

然后在docker-compose.yml中替换image为build: ./odoo14(需在对应版本目录下放置Dockerfile)。

3. 安装自定义Python依赖(requirements.txt)

每个版本的依赖单独管理,在对应版本的config/下创建requirements.txt,比如Odoo14的依赖:

psycopg2-binary==2.8.6
python-dateutil==2.8.2
jinja2==2.11.3

进入容器安装依赖:

# 进入Odoo14容器
docker exec -it odoo14-dev bash
# 安装依赖
pip install -r /etc/odoo/requirements.txt

也可在自定义Dockerfile中加入安装命令,避免每次启动手动安装。

4. 自定义插件管理

将每个版本的自定义插件放入对应版本的addons/目录,比如Odoo14的插件放odoo14/addons/,Odoo16的放odoo16/addons/。

  • 插件目录需符合Odoo插件结构(包含__manifest__.py)
  • 在Odoo后台开启开发者模式,点击「更新应用列表」即可看到自定义插件。

四、VS Code多版本容器开发环境配置

1. 安装必要插件

打开VS Code,安装以下插件:

  • Remote - Containers:连接Docker容器
  • Python:Python代码支持与调试
  • Odoo Snippets(可选):Odoo代码片段

2. 连接到指定Odoo容器

  1. 打开项目根目录odoo-multi-version
  2. 点击左下角的「><」图标,选择「Remote-Containers: Attach to Running Container...」
  3. 在列表中选择要开发的容器(比如odoo14-dev)
  4. VS Code会重新加载并进入容器内的开发环境

3. 配置Python解释器

  1. 按Ctrl+Shift+P打开命令面板
  2. 选择「Python: Select Interpreter」
  3. 选择容器内的Python解释器(比如/usr/bin/python3,不同Odoo版本的Python路径可通过which odoo在容器内查看)

4. 配置调试环境(launch.json)

  1. 打开「运行和调试」面板,点击「创建launch.json文件」,选择「Python」→「Python File」
  2. 修改为Odoo调试配置:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Odoo 14 Debug",
            "type": "python",
            "request": "launch",
            "program": "/usr/bin/odoo",
            "args": [
                "--config=/etc/odoo/odoo.conf",
                "--dev=reload,qweb,werkzeug"
            ],
            "console": "integratedTerminal",
            "justMyCode": false
        }
    ]
}

每个版本需单独配置,修改name和program路径。

5. 配置任务(tasks.json,可选)

用于快速启动Odoo或安装依赖:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Start Odoo 14",
            "type": "shell",
            "command": "odoo --config=/etc/odoo/odoo.conf",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        },
        {
            "label": "Install Requirements 14",
            "type": "shell",
            "command": "pip install -r /etc/odoo/requirements.txt",
            "problemMatcher": []
        }
    ]
}

五、启动与验证环境

1. 启动所有服务

cd odoo-multi-version
docker-compose up -d

查看服务状态:

docker-compose ps

2. 访问Odoo后台

  • Odoo14:http://localhost:14069
  • Odoo16:http://localhost:16069
  • Odoo17:http://localhost:17069
    首次访问输入odoo.conf中设置的admin_passwd,创建数据库即可进入系统。

3. 验证自定义插件

在Odoo后台开启开发者模式,进入「应用」→「更新应用列表」,搜索自定义插件名称并安装验证。


内容的提问来源于stack exchange,提问作者Ahmed Haroon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:52:03