
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Dockerdoo是一个灵活且精简的Docker化Odoo项目,提供两种基于同一Dockerfile的部署方式:
./src/odoo目录)并挂载到容器内,适用于开发场景(需直接修改Odoo核心代码时)。该镜像与VSCode深度集成以实现快速开发和调试,只需安装Remote Containers扩展即可。
针对不同Odoo版本(15.0、16.0、17.0、18.0、master)和架构(linux/amd64、linux/arm64)的预构建镜像,通过GitHub Actions自动构建、测试并发布至以下仓库:
ghcr.io/iterativo-git/dockerdoo:<odoo_version>(如ghcr.io/iterativo-git/dockerdoo:17.0)iterativodo/dockerdoo:<odoo_version>gcr.io/iterativo/dockerdoo:<odoo_version>通常可直接拉取预构建镜像(确保Compose文件中设置image: iterativodo/dockerdoo:${ODOO_VERSION}且.env文件定义ODOO_VERSION),无需本地构建,节省时间。
1. 克隆仓库
shellgit clone git@github.com:iterativo-git/dockerdoo.git && cd dockerdoo
2. 配置环境
复制示例环境变量文件.env.example为.env,并调整变量值,特别是ODOO_VERSION(Odoo版本)和PSQL_VERSION(PostgreSQL版本)。
3. 独立模式(默认,生产环境)
使用预构建镜像或构建包含Odoo源代码的镜像:
shell# 确保.env文件中已设置ODOO_VERSION docker-compose build # 可选:仅在不使用预构建镜像或修改Dockerfile时需要 docker-compose up -d
4. 宿主模式(开发环境)
需先将Odoo源代码克隆至./src/odoo目录:
shell# 克隆指定版本的Odoo源代码(以17.0为例) git clone --depth=1 -b 17.0 git@github.com:odoo/odoo.git src/odoo # 确保.env文件中的ODOO_VERSION与克隆的源代码版本一致 docker-compose -f docker-compose.yml -f hosted.yml build # 通常需要构建 docker-compose -f docker-compose.yml -f hosted.yml up -d
环境变量(.env文件)
.env文件(从.env.example复制)是核心配置,关键变量包括:
ODOO_VERSION:指定Odoo版本(如17.0),必须与预构建镜像标签或宿主模式下克隆的源代码版本匹配PSQL_VERSION:PostgreSQL数据库版本(如16)POSTGRES_DB、POSTGRES_USER、POSTGRES_PASSWORD:数据库凭据ADMIN_PASSWORD:Odoo新数据库的超级管理员密码PIP_AUTO_INSTALL=1:设为1时,启动时自动安装自定义模块的Python依赖UPGRADE_ODOO=1:设为1时,启动时执行odoo -u all(升级所有模块)RUN_TESTS=1:设为1时,启动时运行Odoo测试(可通过WITHOUT_TEST_TAGS排除特定测试标签)ODOO_RC:容器内Odoo配置文件路径(默认/etc/odoo/odoo.conf),由入口脚本根据环境变量管理更多环境变量可查看Dockerfile和resources/entrypoint.sh文件。
构建参数
可通过--build-arg自定义Docker镜像构建:
shelldocker-compose build --build-arg PYTHON_VERSION=3.11-slim --build-arg ODOO_VERSION=17.0
可用参数(详见Dockerfile):PYTHON_VERSION(Python版本)、OS_VARIANT(操作系统变体)、ODOO_VERSION(Odoo版本)、WKHTMLTOX_VERSION(WKHTMLToX版本)、APP_UID(应用用户ID)、APP_GID(应用用户组ID)。
Docker Compose覆盖文件
通过组合多个Compose文件实现不同配置:
docker-compose.yml:基础配置(独立模式)hosted.yml:宿主模式覆盖(挂载./src/odoo目录)dev-standalone.yml:独立模式开发工具(如--dev=all、WDB调试)dev-hosted.yml:宿主模式开发工具test-env.yml:运行Odoo测试配置(--test-enable --stop-after-init)使用-f参数组合文件:
shell# 宿主模式开发 docker-compose -f docker-compose.yml -f hosted.yml -f dev-hosted.yml up # 运行测试(独立模式) docker-compose -f docker-compose.yml -f test-env.yml up
自定义模块(./custom目录)
将自定义Odoo模块放在./custom/目录的子目录中(如./custom/my_cool_module/、./custom/oca_addons/web/)。
入口脚本entrypoint.sh会运行getaddons.py,扫描${ODOO_EXTRA_ADDONS}路径(默认/mnt/extra-addons,即docker-compose.yml中挂载的./custom目录),查找包含__manifest__.py或__openerp__.py的有效模块目录,并将其添加到Odoo的addons_path配置中。
开发环境:挂载式vs内置式自定义模块
1. 挂载式模块(推荐本地开发):
./custom目录(或其子目录)dev-hosted.yml或dev-standalone.yml),将./custom目录挂载到容器内/mnt/extra-addons-u升级)./custom目录(或其中特定模块)添加到.gitignore,避免提交到当前仓库(若模块在单独仓库管理)2. 内置式模块(推荐生产镜像或共享): 如需创建包含自定义模块的独立镜像,需基于Dockerdoo基础镜像构建自定义镜像:
dockerfile# 添加自定义模块的示例Dockerfile ARG ODOO_VERSION=18.0 # 替换为所需版本 FROM iterativodo/dockerdoo:${ODOO_VERSION} # 设置标准环境变量(可被覆盖) ENV ODOO_EXTRA_ADDONS=/mnt/extra-addons # 切换至root用户进行安装操作 USER root # 从本地目录复制自定义模块(假设模块在./my_addons目录) COPY --chown=${ODOO_USER}:${ODOO_USER} ./my_addons ${ODOO_EXTRA_ADDONS}/my_addons # 安装自定义模块的Python依赖 RUN apt-get update && apt-get install -y --no-install-recommends build-essential \ && find ${ODOO_EXTRA_ADDONS}/my_addons -name 'requirements.txt' -exec pip3 --no-cache-dir install -r {} \; \ && apt-get purge -y --auto-remove build-essential \ && rm -rf /var/lib/apt/lists/* # 切换回默认odoo用户 USER ${ODOO_USER}
构建自定义镜像:
shelldocker build -t my-custom-odoo:latest .
更新docker-compose.yml(或生产覆盖文件)使用自定义镜像:image: my-custom-odoo:latest
SSH密钥访问
基础docker-compose.yml将宿主机~/.ssh/目录挂载到容器内/opt/odoo/.ssh/,使容器内进程(如从私有Git仓库安装Python依赖)可使用本地SSH密钥进行身份验证。
8069:Odoo HTTP接口8072:Odoo长轮询(Longpolling)端口bashyour-project/ ├── resources/ # 容器内使用的脚本(entrypoint.sh、getaddons.py等) ├── src/ │ └── odoo/ # Odoo源代码(仅宿主模式需要) ├── custom/ # 自定义Odoo模块(放在子目录中) │ ├── my_module_1/ │ └── my_module_2/ ├── .github/ # GitHub Actions工作流(CI/CD) ├── .env.example # 环境变量示例文件(复制为.env使用) ├── .env # 本地环境变量(Git忽略) ├── Dockerfile # Odoo镜像构建文件 ├── docker-compose.yml # 基础Compose配置 ├── hosted.yml # 宿主模式覆盖配置 ├── dev-standalone.yml # 独立模式开发覆盖配置 ├── dev-hosted.yml # 宿主模式开发覆盖配置 ├── test-env.yml # 测试环境覆盖配置 └── ... # 其他文件(.gitignore、README.md等)
主要基于以下项目的工作:
借鉴了以下项目的思路:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务