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容器
- 打开项目根目录
odoo-multi-version - 点击左下角的「><」图标,选择「Remote-Containers: Attach to Running Container...」
- 在列表中选择要开发的容器(比如
odoo14-dev) - VS Code会重新加载并进入容器内的开发环境
3. 配置Python解释器
- 按
Ctrl+Shift+P打开命令面板 - 选择「Python: Select Interpreter」
- 选择容器内的Python解释器(比如
/usr/bin/python3,不同Odoo版本的Python路径可通过which odoo在容器内查看)
4. 配置调试环境(launch.json)
- 打开「运行和调试」面板,点击「创建launch.json文件」,选择「Python」→「Python File」
- 修改为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
相关产品推荐
相关产品推荐

