#!/usr/bin/env bash # migrate-test-db.sh — dump 容器 system-db (shuimu-system-pg-test :5434) → 本机 localpg :5434 # # 复用 migrate-dev-db.sh 的通用逻辑(其全部差异点已参数化);本脚本只钉 test 默认值: # CONTAINER=shuimu-system-pg-test DATA_DIR=data/test PORT=5434 DB=agent_system_test # 前置: # - 容器 shuimu-system-pg-test 健康(作为 dump 源) # - brew postgresql@18 + pgvector 已安装(LOCALPG_BIN 可覆盖) # - configs/.env.test 提供 SYSTEM_DB_*(或用环境变量覆盖) # 不删除 docker volume;回滚:docker compose -f docker-compose.test.yml -p agent-test up -d system-db set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # 读取 test 环境 SSOT(SYSTEM_DB_* 等;含密钥,勿回显) # shellcheck disable=SC1091 if [[ -f "$ROOT/configs/.env.test" ]]; then set -a . "$ROOT/configs/.env.test" set +a fi export DEV_PG_CONTAINER="${DEV_PG_CONTAINER:-shuimu-system-pg-test}" export DATA_DIR="${MIGRATE_DATA_DIR:-$ROOT/data/test}" # 绝对路径,避免 PGDATA 相对解析漂移 export PORT="${CONTEXT_DB_PORT:-${SYSTEM_DB_PUBLISH_PORT:-5434}}" export CONTEXT_DB_PORT="$PORT" export DB_USER="${CONTEXT_DB_USER:-${SYSTEM_DB_USER:-app}}" export DB_PASS="${CONTEXT_DB_PASSWORD:-${SYSTEM_DB_PASSWORD:?SYSTEM_DB_PASSWORD required (configs/.env.test)}}" export DB_NAME="${CONTEXT_DB_NAME:-${SYSTEM_DB_NAME:-agent_system_test}}" export DUMP="${DUMP_PATH:-$ROOT/.tmp/test-pg-migrate.dump}" # migrate-dev-db.sh 的 dump 步骤读取 SYSTEM_DB_USER / SYSTEM_DB_NAME export SYSTEM_DB_USER="${SYSTEM_DB_USER:-app}" export SYSTEM_DB_NAME="${SYSTEM_DB_NAME:-agent_system_test}" bash "$ROOT/scripts/migrate-dev-db.sh"