部署与运维 · 更新于 2026-10-27

生产运维、升级与 CDN 托管

涵盖容器无损升级、PostgreSQL 备份恢复、JVM 内存调优以及官网全站静态化 CDN 托管指南。

容器平滑升级

CatCRM 容器本身无状态,所有业务数据均保存在宿主机挂载目录(默认 ~/catcrm)中,容器可以随时删除重建而不会丢失数据。

升级新版本时,使用与首次部署相同的 -e 和 -v 参数重新 docker run 即可:

# 1. 拉取新版本镜像
docker pull makunet/catcrm:0.1.1

# 2. 优雅停止容器(等待 30 秒让 PostgreSQL 与 Redis 完成落盘)
docker stop -t 30 catcrm

# 3. 移除旧容器
docker rm catcrm

# 4. 使用新版本镜像标签(0.1.1)重新执行 docker run

升级注意事项

  • 禁止强杀容器:请勿使用 docker rm -f 强制杀死运行中的容器,否则 PostgreSQL 下次启动时需要执行崩溃恢复(Crash Recovery)。
  • 清理系统配置缓存:如果新版本升级修改了系统配置表数据,请手动清理 Redis 中的配置缓存以立即生效:
    docker exec catcrm sh -c 'redis-cli -a "$REDIS_PASSWORD" --no-auth-warning -n 0 DEL system:config'
    
  • 修改密码:如需更换数据库或 Redis 密码,只需用新的 DB_PASSWORD、REDIS_PASSWORD 重建容器,启动脚本会自动同步数据库用户密码。

数据备份与 JVM 内存调整

在线备份 PostgreSQL 数据库

无需进入容器,直接在宿主机执行以下命令即可导出完整 SQL 备份文件:

docker exec catcrm sh -c 'PGPASSWORD="$DB_PASSWORD" pg_dump -h 127.0.0.1 -U "${DB_USER:-catcrm}" "${DB_NAME:-catcrm}"' > catcrm_backup_$(date +%F).sql

调整 JVM 内存占比

容器默认配置 JAVA_TOOL_OPTIONS="-XX:MaxRAMPercentage=60.0"。如需在内存较小的机器或大内存服务器上自定义 JVM 堆上限,可在 docker run 时通过环境变量覆盖:

-e JAVA_TOOL_OPTIONS="-Xms512m -Xmx2048m"

官网静态化打包与 CDN 托管 (site/)

CatCRM 官方网站(位于仓库 site/ 目录)基于 Nuxt 3 + Nuxt UI v3 + Nuxt Content v3 构建,已预置全站静态预渲染(SSG)配置,生成的纯静态文件可直接托管至阿里云 OSS + CDN、腾讯云 COS + EdgeOne、Cloudflare Pages、Vercel 或任意 Nginx 静态服务器。

1. 本地开发与预览

cd site
npm install
npm run dev      # 启动在 http://localhost:3001

2. 生成全站静态产物(SSG)

cd site
npm run generate

执行完成后,所有预渲染好的 HTML、CSS、JS 与内置 SQLite WASM 内容库将输出到 site/.output/public(以及软链 site/dist)目录。

3. 上传至 CDN / 对象存储

只需将 site/.output/public/ 目录下的全部文件上传至您的对象存储桶(Bucket)或 CDN 源站目录:

  • 默认首页设置为:index.html
  • 404 错误页设置为:404.html
  • 建议对 /_nuxt/* 静态带哈希资源配置长期强缓存(Cache-Control: public, max-age=31536000, immutable),对 *.html 页面配置协商缓存(Cache-Control: no-cache)。