- 将 .env.example 中的 PORT 从 3001 更改为 3010 - 将 CORS_ORIGIN 从 http://localhost:5173 更改为 http://localhost:5180 - 更新 compose.yaml 中的服务端口和健康检查端口为 3010 - 修改 Dockerfile 中暴露的端口为 3010 - 更新文档中的 API 端口引用从 3001 到 3010 - 在 Vite 配置中设置开发服务器端口为 5180 - 更新 Vite 代理目标地址为 http://localhost:3010
2.6 KiB
2.6 KiB
部署与运维手册
环境变量
| 变量 | 必需 | 说明 |
|---|---|---|
NODE_ENV |
是 | 正式环境设为 production |
PORT |
否 | API 与生产静态站端口,默认 3010 |
DATABASE_URL |
正式环境 | PostgreSQL 连接串;缺省时使用 SQLite |
PGSSL |
否 | 内网 PostgreSQL 可设为 disable |
PG_POOL_MAX |
否 | 连接池上限,默认 10 |
CORS_ORIGIN |
公网分离部署 | 允许来源,多个值以逗号分隔 |
POSTGRES_PASSWORD |
Docker | compose.yaml 使用的数据库密码 |
COS_CONFIG_ENCRYPTION_KEY |
正式环境 | 至少 32 字符的稳定随机密钥 |
INITIAL_ADMIN_USERNAME |
首次初始化 | 平台管理员账号,默认 admin |
INITIAL_ADMIN_DISPLAY_NAME |
首次初始化 | 平台管理员显示名 |
INITIAL_ADMIN_PASSWORD |
首次初始化 | 空 PostgreSQL 必须提供的临时密码 |
真实环境变量只放在部署平台或未提交的 .env 中。
部署
cp .env.example .env
# 编辑 .env 后:
docker compose up -d --build
在 HTTPS 反向代理后公开应用。不要直接提交 TLS 私钥、数据库文件、.env、data/ 或 uploads/。
冒烟检查
curl http://127.0.0.1:3010/api/health
docker compose ps
docker compose logs --tail=100 app
健康接口应返回 success: true,且正式环境的 database 应为 postgres。
COS 配置
- 使用平台管理员进入“平台管理 → 腾讯云 COS”。
- 填写地域、带 APPID 的存储桶名、公开访问域名、可选 CDN 域名、路径前缀及密钥。
- 保存后执行连接测试。
- 测试通过后启用配置。
连接测试会真实执行一次上传、读取和删除,因此密钥至少需要目标前缀的这三项权限。测试对象会尽力清理;请求中断时可检查 <path-prefix>/.delivery-desk-check/ 是否残留临时文件。
COS 使用公开 URL。必须关闭桶列表功能并使用不可枚举对象名;拿到 URL 的人可以直接访问文件。
数据备份与恢复
- PostgreSQL 使用托管备份或定期
pg_dump,恢复流程需在预发布环境演练。 - COS 开启版本控制或生命周期策略前先评估成本。
- 本地 SQLite 的
data/只用于开发,不作为正式备份方案。 COS_CONFIG_ENCRYPTION_KEY必须与数据库备份一同安全托管;遗失后无法解密已保存的 COS 凭证。
发布前检查
pnpm install --frozen-lockfile
pnpm check
pnpm lint
pnpm build
pnpm test:postgres-runtime
正式切换前还应验证:管理员首次改密、客户访问门禁、COS 上传、客户批注与验收、数据库备份及 HTTPS Cookie。