fix: complete Douyin release remediation
This commit is contained in:
+42
-4
@@ -1,6 +1,6 @@
|
||||
# CreatorHub 部署
|
||||
|
||||
本文档按 `feat/python-gateway-douyin` 当前代码说明单台 Linux 主机 Docker Compose 部署及离线检查,不证明新产品功能已实现。[plan01](plan01.md) 是业务范围与验收依据;离线结果不能替代抖音/小红书最终真机验收。
|
||||
本文档按当前发布提交说明单台 Linux 主机 Docker Compose 部署及离线检查,不证明新产品功能已实现。[plan01](plan01.md) 是业务范围与验收依据;离线结果不能替代抖音/小红书最终真机验收。
|
||||
|
||||
当前控制面仍使用单用户 HTTP Basic Auth(除 `/healthz` 外,包括静态页面),不提供 RBAC 或多租户隔离。开发目标不新增认证/访问限制,但本轮未删除现有代码或配置;以下变量仍须填写,不新增认证 profile。
|
||||
|
||||
@@ -86,7 +86,11 @@ curl --fail --silent --show-error \
|
||||
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 14;' \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 32;' \
|
||||
| grep -qx 1
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 33;' \
|
||||
| grep -qx 1
|
||||
|
||||
docker compose ps
|
||||
@@ -340,6 +344,32 @@ docker compose exec -T postgres pg_restore --list \
|
||||
< "$BACKUP_FILE" >/dev/null
|
||||
```
|
||||
|
||||
PostgreSQL dump 之外,发布备份必须同时包含 credentials、materials 和动态 Profile 卷;这些归档存放在部署侧受限目录,不放进仓库或共享聊天。示例(`BACKUP_DIR` 使用独立磁盘或 Secret Manager 的受控挂载目录):
|
||||
|
||||
```bash
|
||||
set -Eeuo pipefail
|
||||
umask 077
|
||||
BACKUP_DIR=/srv/creatorhub-backups/$(date +%Y%m%d-%H%M%S)
|
||||
mkdir -p "$BACKUP_DIR/profiles"
|
||||
# PostgreSQL dump
|
||||
pg_dump_file="$BACKUP_DIR/creatorhub.dump"
|
||||
docker compose exec -T postgres pg_dump -U creatorhub -d creatorhub --format=custom > "$pg_dump_file"
|
||||
test -s "$pg_dump_file"
|
||||
# Credential and material volumes
|
||||
for volume in creatorhub_credentials creatorhub_materials; do
|
||||
docker run --rm -v "$volume:/data:ro" -v "$BACKUP_DIR:/backup" alpine:3.22 \
|
||||
tar czf "/backup/${volume}.tar.gz" -C /data .
|
||||
done
|
||||
# Dynamic browser Profile volumes; absence is an explicit empty set.
|
||||
for volume in $(docker volume ls -q --filter name='^creatorhub-profile-'); do
|
||||
docker run --rm -v "$volume:/data:ro" -v "$BACKUP_DIR/profiles:/backup" alpine:3.22 \
|
||||
tar czf "/backup/${volume}.tar.gz" -C /data .
|
||||
done
|
||||
find "$BACKUP_DIR" -type f -exec sha256sum {} + > "$BACKUP_DIR/SHA256SUMS"
|
||||
```
|
||||
|
||||
`CREATORHUB_CREDENTIAL_MASTER_KEY` 不写入上述归档;部署管理员必须在独立的 Secret Manager/OS Keyring 保留一份受访问控制的密钥托管记录,并确认恢复主机能注入同一值。恢复前核对 `SHA256SUMS`、主密钥记录和备份目录权限;恢复后在隔离 Compose 项目中还原四类卷,检查账号凭据可解密、材料文件可读、Profile 可挂载,再切换服务。任何一类缺失都判定为恢复失败,不把应用健康检查当作数据恢复证据。
|
||||
|
||||
拉取已审核版本后,重新执行部署和验证:
|
||||
|
||||
```bash
|
||||
@@ -379,7 +409,11 @@ docker compose up --detach --build
|
||||
< "$BACKUP_FILE"
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub_restore_check -v ON_ERROR_STOP=1 -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 12;' \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 32;' \
|
||||
| grep -qx 1
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub_restore_check -v ON_ERROR_STOP=1 -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 33;' \
|
||||
| grep -qx 1
|
||||
docker compose exec -T postgres \
|
||||
dropdb --force -U creatorhub creatorhub_restore_check
|
||||
@@ -426,7 +460,11 @@ docker compose up --detach --build
|
||||
< "$BACKUP_FILE"
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub -v ON_ERROR_STOP=1 -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 12;' \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 32;' \
|
||||
| grep -qx 1
|
||||
docker compose exec -T postgres \
|
||||
psql -U creatorhub -d creatorhub -v ON_ERROR_STOP=1 -tAc \
|
||||
'SELECT 1 FROM schema_migration WHERE version = 33;' \
|
||||
| grep -qx 1
|
||||
|
||||
git switch --detach "$RESTORE_REV"
|
||||
|
||||
Reference in New Issue
Block a user