生产部署、监控与备份恢复

说明单机 Compose 发布前提、健康探针、备份证据和会覆盖数据库的恢复边界。

DockerPostgreSQL监控告警

部署范围与准入

仓库生产目标是单机 Docker Compose:Nginx 代理 Web/API,PostgreSQL 和 Redis 位于内部网络,备份服务定时导出数据库。公网业务入口为 80/443,管理 SSH 应另行限制来源;数据库、Redis 和指标端点不应直接暴露公网。该栈不是高可用方案。

操作需要主机维护权限、Docker、独立生产配置和变更窗口。生产 DNS、CA 证书、真实密钥、防火墙及异地备份目的地必须由负责人确认。prod-go-live 的本机成功不能证明公网可达。

配置与发布

首次可用 make bootstrap-prod 生成私有配置,再填写真实 HTTPS 域名、证书和备份路径。检查 PROD_ENV_FILE 指向正确文件,权限限制为 600,且未加入版本控制。目标确认后执行:

PROD_ENV_FILE=/etc/douya/production.env STRICT_PROD=1 make preflight
PROD_ENV_FILE=/etc/douya/production.env RUN_VERIFY=1 make prod-release

发布脚本预检并构建不可变标签镜像,启动数据服务,强制生成切换前备份,执行迁移,再启动 API/Web/Nginx、验证并记录发布信息。自签证书只适合本地冒烟;若脚本回退探测 https://127.0.0.1,仍必须从外部网络单独验收域名与证书。

健康和监控

/health/live 检查进程存活;/health/ready 依赖 PostgreSQL,Redis 失败时可返回 200 并标记降级。需要同时观察正文读取、后台登录与写入,不把 200 当成全部依赖健康。

PROD_ENV_FILE=/etc/douya/production.env make prod-ps
PROD_ENV_FILE=/etc/douya/production.env make prod-smoke
PROD_ENV_FILE=/etc/douya/production.env make prod-monitoring

可选 Prometheus 抓取 API 与备份指标,默认仅绑定本机 9090。仓库包含告警规则,但未随栈交付 Alertmanager 通知通道。Nginx 不代理 /metrics,公网访问应为 404。容器日志有轮转限制,集中日志采集属于后续接入工作。

备份证据

备份服务默认每 86400 秒执行,保留数量由配置控制。设置宿主机 BACKUP_DIR_MOUNT,避免只有容器卷内副本;核验 dump 文件、last-success 和备份指标时间,不能仅看容器仍在运行。异地同步需要已授权的 BACKUP_REMOTE;配置与证书归档应按敏感数据管理。

定期在隔离数据库演练恢复并记录行数、内容抽检与应用验收。备份客户端默认使用 PostgreSQL 17 容器,若指定本机客户端需确认版本兼容。

恢复和回退边界

compose-restore.sh 会停止 API/Web/备份、终止数据库连接,并通过带清理选项的 pg_restore 覆盖目标数据。prod-rollback 默认先恢复上一发布记录的 dump,再切换镜像;它不是无损撤销,也不保证恢复点就是故障前一刻。

执行前必须停写、保存当前故障现场和额外备份、确认 dump 时间及可接受丢失窗口,并核对镜像与数据模式兼容性。缺少任一证据就停止,不盲用最新 dump。恢复失败时保持入口受控,保存日志交由负责人处理,不循环运行迁移回退。

交接清单

记录发布标签、迁移版本、当前和上一发布记录、备份位置、恢复测试结果、证书到期与告警接收人。详细准入见发布检查清单,配置职责见配置与安全

DOUYA OPS ECOSYSTEM

完善文档,帮助更多运维人

把安装、配置、API 与运维方法沉淀为清晰文档,让工具和项目更容易被正确使用。