- 提供 API/Web 多阶段镜像、Nginx 反代与 WS/文件路径 - docker-compose.prod 含 Postgres、MinIO、API、前端 - deploy.sh 生成密钥、构建启动、可选种子与备份脚本
33 lines
827 B
Bash
Executable File
33 lines
827 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# 备份生产 Postgres 数据
|
|
# 用法:./deploy/scripts/backup-db.sh [输出目录]
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
ENV_FILE="deploy/.env.prod"
|
|
OUT_DIR="${1:-./backups}"
|
|
COMPOSE_FILE="docker-compose.prod.yml"
|
|
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo "缺少 $ENV_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# shellcheck disable=SC1090
|
|
set -a
|
|
source <(sed 's/\r$//' "$ENV_FILE" | grep -v '^\s*#' | grep -v '^\s*$' || true)
|
|
set +a
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
STAMP="$(date +%Y%m%d_%H%M%S)"
|
|
FILE="${OUT_DIR}/kefu_pg_${STAMP}.sql.gz"
|
|
|
|
echo "备份到 $FILE …"
|
|
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T postgres \
|
|
pg_dump -U "${DB_USER:-kefu}" "${DB_NAME:-kefu_sys}" | gzip > "$FILE"
|
|
|
|
echo "完成: $FILE ($(du -h "$FILE" | awk '{print $1}'))"
|