用 AI 一键部署可生产的 Odoo Docker 环境

解决 Odoo 本地开发或服务器部署繁琐的配置问题,自动生成包含数据库持久化、环境变量隔离及安全反向代理的完整 Docker 编排文件。

为什么需要这个技能

Odoo 是一套复杂的 ERP 系统,官方镜像自带数据但配置选项有限。手动编写 docker-compose.yml 常因网络问题、数据库连接失败或记忆错误导致容器无法启动。

本技能通过 AI 快速生成包含 PostgreSQL 数据卷挂载、环境变量(${POSTGRES_PASSWORD})占位符以及 Nginx 反向代理支持的标准化部署文件,避免重复造轮子。

适用场景

  • 在 VPS 或云服务器(AWS、DigitalOcean 等)上从零搭建 Odoo 环境。
  • 需要为 Odoo 添加持久化存储,防止重启后数据丢失。
  • 快速修复容器启动失败或数据库连接错误的常见故障。

核心工作流

  1. 描述需求:向 AI 说明是开发环境还是生产环境,是否需要 Nginx 终止 SSL。
  2. 生成配置:获取经过优化的 docker-compose.ymlodoo.conf
  3. 部署与启动:执行 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

你可能还需要

暂无推荐