部署优化

This commit is contained in:
wchino
2026-06-13 22:16:14 +08:00
parent 21dd9957f0
commit 73a94e6be3
28 changed files with 899 additions and 129 deletions

View File

@@ -29,6 +29,7 @@ usage() {
选项:
--no-build 不构建镜像,直接使用服务器已有镜像
--images PATH 先 docker load 指定镜像 tar并自动跳过本机构建
--tag TAG 使用指定镜像 tag并写入 .env.docker 的 IMAGE_TAG
--no-seed 不执行生产 seed
--init-db 调用 scripts/prod-init-db.sh 清空业务数据并初始化生产数据,仅限全新库或明确重置
--skip-backup 与 --init-db 一起使用,跳过 prod-init-db 的备份
@@ -37,7 +38,7 @@ usage() {
示例:
./scripts/deploy-first.sh
./scripts/deploy-first.sh --images thebet365-images.tar
./scripts/deploy-first.sh --images thebet365-images-v1.2.3.tar --tag v1.2.3
./scripts/deploy-first.sh --no-build
./scripts/deploy-first.sh --init-db
EOF
@@ -54,6 +55,10 @@ while [ $# -gt 0 ]; do
NO_BUILD=true
shift 2
;;
--tag)
set_deploy_image_tag "${2:?缺少 --tag 参数值}"
shift 2
;;
--no-seed)
RUN_SEED=false
shift
@@ -86,6 +91,14 @@ require_docker
ensure_env_file || exit 1
validate_prod_env "$ALLOW_DEFAULT_SECRETS"
if [ -n "$IMAGE_TAR" ] && [ -z "${DEPLOY_IMAGE_TAG:-}" ]; then
inferred_tag="$(infer_image_tag_from_tar "$IMAGE_TAR")"
if [ -n "$inferred_tag" ]; then
set_deploy_image_tag "$inferred_tag"
log "从镜像包文件名推断 tag: $inferred_tag"
fi
fi
if [ -n "$IMAGE_TAR" ]; then
load_image_tar "$IMAGE_TAR"
fi
@@ -96,6 +109,7 @@ if [ "$NO_BUILD" = false ]; then
build_app_images
else
log "跳过镜像构建,使用服务器已有镜像"
require_images_for_current_tag
fi
run_prisma_migrations
@@ -106,7 +120,7 @@ fi
log "启动 api / player / admin"
compose up -d api player admin
wait_for_service_running api 120
wait_for_stack_ready
if [ "$INIT_DB" = true ]; then
init_args=()
@@ -116,9 +130,11 @@ if [ "$INIT_DB" = true ]; then
log "执行生产初始化:这会清空业务数据"
CONFIRM=YES "$ROOT/scripts/prod-init-db.sh" "${init_args[@]}"
compose restart api
wait_for_service_running api 120
wait_for_service_health api 180
fi
show_prisma_status
compose ps
persist_image_tag
record_release_state "first-deploy"
print_stack_urls