Files
thebet365/scripts/deploy-update.sh
2026-06-13 17:38:25 +08:00

114 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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