This commit is contained in:
wchino
2026-06-13 17:38:25 +08:00
parent e7e938f261
commit 7b33d9f9fa
190 changed files with 23222 additions and 4336 deletions

113
scripts/deploy-update.sh Executable file
View File

@@ -0,0 +1,113 @@
#!/usr/bin/env bash
# 后续更新:可选拉代码/加载镜像,备份数据库,构建或使用新镜像,执行迁移并滚动到新容器。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=scripts/deploy-lib.sh
source "$SCRIPT_DIR/deploy-lib.sh"
PULL_CODE=false
NO_BUILD=false
SKIP_BACKUP=false
ALLOW_DEFAULT_SECRETS=false
IMAGE_TAR=""
usage() {
cat <<'EOF'
用法: scripts/deploy-update.sh [选项]
默认流程:
1. 检查 .env.docker
2. 启动并等待 postgres / redis
3. 备份 PostgreSQL 到 ./backups
4. 构建 api / player / admin 镜像
5. 使用新 api 镜像执行 prisma migrate deploy
6. 启动/替换 api、player、admin 容器
7. 检查 prisma migrate status
选项:
--pull 先执行 git pull --ff-only
--images PATH 先 docker load 指定镜像 tar并自动跳过本机构建
--no-build 不构建镜像,直接使用服务器已有镜像
--no-backup 跳过数据库备份
--allow-default-secrets 允许 .env.docker 使用示例密钥,仅测试环境使用
-h, --help 显示帮助
示例:
./scripts/deploy-update.sh --pull
./scripts/deploy-update.sh --images thebet365-images.tar
./scripts/deploy-update.sh --no-build
EOF
}
while [ $# -gt 0 ]; do
case "$1" in
--pull)
PULL_CODE=true
shift
;;
--images)
IMAGE_TAR="${2:?缺少 --images 参数值}"
NO_BUILD=true
shift 2
;;
--no-build)
NO_BUILD=true
shift
;;
--no-backup)
SKIP_BACKUP=true
shift
;;
--allow-default-secrets)
ALLOW_DEFAULT_SECRETS=true
shift
;;
-h|--help)
usage
exit 0
;;
*)
die "未知参数: $1"
;;
esac
done
cd "$ROOT"
require_docker
ensure_env_file || exit 1
validate_prod_env "$ALLOW_DEFAULT_SECRETS"
if [ "$PULL_CODE" = true ]; then
require_command git
log "拉取代码: git pull --ff-only"
git pull --ff-only
fi
if [ -n "$IMAGE_TAR" ]; then
load_image_tar "$IMAGE_TAR"
fi
start_infra
if [ "$SKIP_BACKUP" = false ]; then
backup_database "pre-update"
else
warn "已跳过数据库备份"
fi
if [ "$NO_BUILD" = false ]; then
build_app_images
else
log "跳过镜像构建,使用服务器已有镜像"
fi
run_prisma_migrations
log "启动/更新 api / player / admin"
compose up -d api player admin
wait_for_service_running api 120
show_prisma_status
compose ps
print_stack_urls