You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Docker部署的ERPNext转换为常规安装方案咨询

从Docker部署的ERPNext迁移到Frappe Bench(保留数据+Traefik配置)

一、Docker环境下的完整数据备份

这一步是核心,确保所有数据和配置都被妥善保存:

  1. 备份数据库

    • 方法一:使用Frappe内置备份命令(推荐,自动关联站点数据库与文件)
      docker exec -it <erpnext_container_name> bench backup
      
      备份文件生成在容器内/home/frappe/frappe-bench/sites/<your_site_name>/private/backups/目录,复制到本地:
      docker cp <erpnext_container_name>:/home/frappe/frappe-bench/sites/<your_site_name>/private/backups ./erpnext_backups
      
    • 方法二:直接导出全量数据库
      docker exec -it <mariadb_container_name> mysqldump -u root -p<db_root_password> --all-databases > erpnext_full_db.sql
      
      替换<mariadb_container_name>和<db_root_password>为实际容器名与数据库密码。
  2. 备份站点文件
    复制Docker容器内的sites目录到本地,包含上传附件、站点配置等关键文件:

    docker cp <erpnext_container_name>:/home/frappe/frappe-bench/sites ./erpnext_sites_backup
    

二、搭建Frappe Bench环境

确保服务器满足依赖要求(Python 3.8+/Node.js 16+/MariaDB 10.6+/Redis等),执行以下步骤:

  1. 安装bench工具:
    pip install frappe-bench
    
  2. 初始化bench项目(必须与Docker部署的ERPNext版本一致,先通过docker exec -it <erpnext_container_name> bench version查看版本):
    bench init frappe-bench --frappe-branch version-14  # 替换为实际版本分支
    
  3. 进入bench目录并创建站点:
    cd frappe-bench
    bench new-site <your_site_domain>  # 与原Docker部署的站点域名保持一致
    

三、恢复数据到Frappe Bench

  1. 停止bench服务:
    bench stop
    
  2. 恢复数据库:
    • 若使用bench backup生成的备份文件,直接用bench恢复命令:
      bench restore ./erpnext_backups/<backup_file_name>.sql.gz
      
    • 若使用全量SQL备份,导入到MariaDB:
      mysql -u root -p < ./erpnext_full_db.sql
      
  3. 恢复站点文件:
    复制备份的站点目录到新bench的sites目录,覆盖默认文件:
    cp -r ../erpnext_sites_backup/<your_site_domain> ./sites/
    
  4. 修复权限并重启服务:
    bench setup permissions
    bench start
    
    此时可通过服务器IP:8000访问站点,验证数据完整性。

四、保留Traefik及自定义证书配置

无需销毁现有Traefik容器,只需修改路由规则,将流量导向Frappe Bench的web服务:

  1. 修改Traefik路由配置

    • 若之前用Docker标签自动配置路由,切换为文件配置。创建erpnext.yml配置文件:
      http:
        routers:
          erpnext-router:
            rule: "Host(`<your_site_domain>`)"
            entryPoints:
              - websecure
            tls:
              certResolver: <your_existing_cert_resolver>  # 复用原证书解析器
            service: erpnext-service
        services:
          erpnext-service:
            loadBalancer:
              servers:
                - url: "http://<server_internal_ip>:8000"  # Frappe Bench的web服务端口
      
    • 将该文件挂载到Traefik容器的配置目录(如/etc/traefik/dynamic/),Traefik会自动加载新规则。
  2. 验证Traefik路由
    重启Traefik容器后,访问站点域名,确认流量已转发到Frappe Bench且自定义证书正常生效。

关键注意事项

  • 版本一致性:Frappe Bench安装的Frappe/ERPNext版本必须与原Docker部署完全一致,否则会出现数据兼容性问题。
  • 权限检查:确保运行bench的用户对sites目录有读写权限,避免文件访问错误。
  • 测试验证:迁移完成后,先测试核心功能(数据查询、文件上传、用户登录),再正式切换Traefik路由。

内容的提问来源于stack exchange,提问作者fvlasie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:35:22