Odoo docker deployment
Skill findscripter/everything-skills/09-verticals/odoo-docker-deployment
当用 Docker/docker-compose 自托管部署或排障 Odoo 时使用;产出生产级 compose、odoo.conf、备份/更新命令与 Nginx+SSL 反代约束;不适用于 Odoo.sh 云托管、多容器水平扩展与共享 filestore。触发词:Odoo 部署、docker-compose、PostgreSQL 容器、反向代理、workers 调优From its SKILL.md
npx -y skills add findscripter/everything-skills --skill odoo-docker-deploymentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.5 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
何时使用
适用:
- 用 Docker 起本地 Odoo 开发环境。
- 把 Odoo 部署到 VPS 或云主机(AWS、DigitalOcean 等)自托管。
- 排查 Odoo 容器启动失败或数据库连接错误。
- 给现有 Odoo Docker 部署加 Nginx + SSL 反向代理。
不该用(负边界):
- Odoo.sh 云托管:其部署模型完全不同,本条目不覆盖。
- 多 Odoo 容器 + 负载均衡的水平扩展:需共享 filestore(NFS 或 S3 兼容存储),此处不涉及。
- 需要完整 Nginx 反代配置模板时:本条目只给约束,配置细节查 Odoo 官方部署文档。
步骤
- 写
.env:把POSTGRES_PASSWORD、ODOO_MASTER_PASSWORD等密钥放进去,compose 与 conf 里用${VAR}引用,禁止硬编码。 - 写
docker-compose.yml:db(PostgreSQL)+ odoo 两服务,挂持久卷与自定义 addons,用内部网络隔离,DB 健康检查通过后 Odoo 才启动。 - 写
odoo.conf:按服务器核数/内存调workers与内存/超时上限,指向正确addons_path。 docker compose up -d启动,logs -f odoo看日志确认就绪。- 生产环境在 Odoo 前置 Nginx 做 SSL 终止(Let's Encrypt / Certbot),不要让 Odoo 直接裸跑 80/443。
- 配好定期
pg_dump备份。
指令
# 后台启动全部服务
docker compose up -d
# 实时跟踪 Odoo 日志
docker compose logs -f odoo
# 只重启 Odoo(不动 DB,避免数据风险)
docker compose restart odoo
# 停止全部服务
docker compose down
# 备份数据库到本地 SQL dump
docker compose exec db pg_dump -U odoo odoo > backup_$(date +%Y%m%d).sql
# 不重启服务器、增量升级某个自定义模块
docker compose exec odoo odoo -d odoo --update my_module --stop-after-init
示例
生产级 docker-compose.yml(Compose v2 顶层 version 已废弃,省略即可):
services:
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: odoo
POSTGRES_USER: odoo
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- odoo-net
odoo:
image: odoo:17.0
restart: always
depends_on:
db:
condition: service_healthy
ports:
- "8069:8069"
- "8072:8072" # Longpolling,用于在线客服 / bus
environment:
HOST: db
USER: odoo
PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- odoo-web-data:/var/lib/odoo
- ./addons:/mnt/extra-addons # 自定义模块
- ./odoo.conf:/etc/odoo/odoo.conf
networks:
- odoo-net
volumes:
postgres-data:
odoo-web-data:
networks:
odoo-net:
odoo.conf(以 4 核 / 8GB 服务器为例):
[options]
admin_passwd = ${ODOO_MASTER_PASSWORD} ; 经 env 或 .env 注入
db_host = db
db_port = 5432
db_user = odoo
db_password = ${POSTGRES_PASSWORD} ; 经 env 或 .env 注入
; 官方 Odoo Docker 镜像(基于 Debian)内的 addons_path
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
logfile = /var/log/odoo/odoo.log
log_level = warn
; 4 核 / 8GB 的 worker 调优:
workers = 9 ; (CPU 核数 × 2) + 1
max_cron_threads = 2
limit_memory_soft = 1610612736 ; 1.5 GB — 软杀阈值
limit_memory_hard = 2147483648 ; 2.0 GB — 硬杀阈值
limit_time_cpu = 600
limit_time_real = 1200
limit_request = 8192
注意事项
应当:
- 所有密钥放
.env,用${VAR}引用,绝不在docker-compose.yml里硬编码。 - 用
depends_on: condition: service_healthy配合 PostgreSQL 健康检查,避免 Odoo 先于 DB 就绪而启动。 - 用 Nginx 前置做 SSL 终止,不要把 Odoo 直接暴露在 80/443。
workers = (CPU 核数 × 2) + 1;workers = 0是单线程模式,会阻塞所有用户。
不应当:
- 把 5432(PostgreSQL)端口暴露到公网,仅保留在内部 Docker 网络。
- 生产用
latest或17这类浮动 tag,应固定到具体补丁级 tag(如odoo:17.0)。 - 在 CI/CD 里靠挂载
odoo.conf来传密钥,改用 Docker secrets 或环境变量。 - 升级 Odoo 镜像后默认
addons_path不变:新基础镜像可能改路径,升级后务必核对。
互见
- Odoo 官方部署文档(含完整 Nginx 反代配置):https://www.odoo.com/documentation/17.0/administration/install/deploy.html
采编自 sickn33/antigravity-awesome-skills(MIT)。
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.