用 AI 一键部署可生产的 Odoo Docker 环境
解决 Odoo 本地开发或服务器部署繁琐的配置问题,自动生成包含数据库持久化、环境变量隔离及安全反向代理的完整 Docker 编排文件。
为什么需要这个技能
Odoo 是一套复杂的 ERP 系统,官方镜像自带数据但配置选项有限。手动编写 docker-compose.yml 常因网络问题、数据库连接失败或记忆错误导致容器无法启动。
本技能通过 AI 快速生成包含 PostgreSQL 数据卷挂载、环境变量(${POSTGRES_PASSWORD})占位符以及 Nginx 反向代理支持的标准化部署文件,避免重复造轮子。
适用场景
- 在 VPS 或云服务器(AWS、DigitalOcean 等)上从零搭建 Odoo 环境。
- 需要为 Odoo 添加持久化存储,防止重启后数据丢失。
- 快速修复容器启动失败或数据库连接错误的常见故障。
核心工作流
- 描述需求:向 AI 说明是开发环境还是生产环境,是否需要 Nginx 终止 SSL。
- 生成配置:获取经过优化的
docker-compose.yml和odoo.conf。 - 部署与启动:执行
docker compose up -d并配置环境变量文件.env。
关键配置示例
Production docker-compose.yml
# Note: The top-level 'version' key is deprecated in Docker Compose v2+
# and can be safely omitted. Remove it to avoid warnings.
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 for live chat / bus
environment:
HOST: db
USER: odoo
PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- odoo-web-data:/var/lib/odoo
- ./addons:/mnt/extra-addons # Custom modules
- ./odoo.conf:/etc/odoo/odoo.conf
networks:
- odoo-net
volumes:
postgres-data:
odoo-web-data:
networks:
odoo-net:
odoo.conf 核心设置
[options]
admin_passwd = ${ODOO_MASTER_PASSWORD} ; set via env or .env file
db_host = db
db_port = 5432
db_user = odoo
db_password = ${POSTGRES_PASSWORD} ; set via env or .env file
; addons_path inside the official Odoo Docker image (Debian-based)
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
logfile = /var/log/odoo/odoo.log
log_level = warn
; Worker tuning for a 4-core / 8GB server:
workers = 9 ; (CPU cores × 2) + 1
max_cron_threads = 2
limit_memory_soft = 1610612736 ; 1.5 GB — soft kill threshold
limit_memory_hard = 2147483648 ; 2.0 GB — hard kill threshold
limit_time_cpu = 600
limit_time_real = 1200
limit_request = 8192
常用运维命令
# Start all services in background
docker compose up -d
# Stream Odoo logs in real time
docker compose logs -f odoo
# Restart Odoo only (not DB — avoids data risk)
docker compose restart odoo
# Stop all services
docker compose down
# Backup the database to a local SQL dump
docker compose exec db pg_dump -U odoo odoo > backup_$(date +%Y%m%d).sql
# Update a custom module without restarting the server
docker compose exec odoo odoo -d odoo --update my_module --stop-after-init
安全最佳实践
- ✅ 必须:将密钥存入
.env文件并使用${VAR}引用,严禁硬编码密码。 - ✅ 必须:使用
depends_on: condition: service_health确保数据库完全就绪后再启动 Odoo。 - ✅ 必须:使用
odoo:17.0等具体版本标签,禁止在生产环境使用latest。 - ❌ 严禁:将 PostgreSQL 端口 5432 暴露在公网,仅在 Docker 内部网络使用。
下载和安装
下载 odoo-docker-deployment 中文版 Skill ZIP
你可能还需要
暂无推荐