补回 swagger(Swashbuckle 6.6.2 + XML 注释)、socket.html 入库、固化本机构建与服务器替换脚本
- Directory.Build.props: 生成 XML 注释供 Swagger 展示中文说明 - AdminHost/FishGameHost: 接入 Swashbuckle,路由 adminswagger / roomswagger - 后台前端 config.js 改为同源相对地址,适配反向代理 - socket.html(SignalR 协议文档)纳入仓库 - deploy/: 本机构建(容器内编译,规避杀软)、服务器替换脚本、Nginx 配置
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================
|
||||
# 服务器侧:加载镜像包并按需启动(无需联网、无需 sdk 镜像)
|
||||
#
|
||||
# 用法:
|
||||
# # 1) 加载完整包并启动全部
|
||||
# bash deploy/load-and-up.sh deploy/dist/buyu-images-<tag>.tar
|
||||
#
|
||||
# # 2) 只加载某个服务的包并只重启该服务(增量更新)
|
||||
# bash deploy/load-and-up.sh deploy/dist/buyu-images-admin-<tag>.tar admin
|
||||
# bash deploy/load-and-up.sh deploy/dist/buyu-images-admin-fishgame-<tag>.tar admin fishgame
|
||||
#
|
||||
# 说明:镜像内的配置(网关 ocelot 下游改写、捕鱼对外地址)已在构建时固化;
|
||||
# 服务器只做「加载镜像 + 按需重启」,不涉及编译。
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
COMPOSE="$ROOT/deploy/docker-compose.yml"
|
||||
TAR="${1:-}"
|
||||
shift || true
|
||||
SERVICES=("$@")
|
||||
|
||||
log() { echo -e "\033[1;32m[部署]\033[0m $*"; }
|
||||
|
||||
[ -n "$TAR" ] || { echo "用法: bash deploy/load-and-up.sh <镜像包.tar> [服务名...]"; exit 1; }
|
||||
[ -f "$TAR" ] || { echo "找不到镜像包: $TAR"; exit 1; }
|
||||
command -v docker >/dev/null 2>&1 || { echo "未检测到 docker,请先安装 Docker"; exit 1; }
|
||||
docker compose version >/dev/null 2>&1 || { echo "未检测到 docker compose v2"; exit 1; }
|
||||
|
||||
log "1/3 加载镜像(tar 较大,需要一点时间)..."
|
||||
docker load -i "$TAR"
|
||||
|
||||
log "2/3 启动容器..."
|
||||
mkdir -p "$ROOT/deploy"/logs/{gateway,admin,user,customer,chess,fishroom,fishgame}
|
||||
mkdir -p "$ROOT/deploy"/uploads/{admin,user,customer}
|
||||
|
||||
if [ ${#SERVICES[@]} -gt 0 ]; then
|
||||
log "仅重建/重启: ${SERVICES[*]}"
|
||||
docker compose -f "$COMPOSE" up -d --force-recreate "${SERVICES[@]}"
|
||||
CHECK=("${SERVICES[@]}")
|
||||
else
|
||||
docker compose -f "$COMPOSE" up -d
|
||||
CHECK=(gateway admin user customer chess fishroom fishgame)
|
||||
fi
|
||||
|
||||
log "3/3 健康检查..."
|
||||
sleep 6
|
||||
declare -A PORT=( [gateway]=8001 [admin]=5241 [user]=5245 [customer]=5247 [chess]=5242 [fishroom]=5244 [fishgame]=5248 )
|
||||
for name in "${CHECK[@]}"; do
|
||||
port="${PORT[$name]:-}"
|
||||
[ -n "$port" ] || continue
|
||||
ok=""
|
||||
for _ in $(seq 1 20); do
|
||||
if curl -fsS -o /dev/null --max-time 2 "http://localhost:$port/health"; then ok="✔"; break; fi
|
||||
sleep 2
|
||||
done
|
||||
echo " ${ok:-✘} $name http://localhost:$port/health"
|
||||
done
|
||||
|
||||
echo ""
|
||||
log "完成。网关统一入口: http://<服务器IP或域名>:8001"
|
||||
Reference in New Issue
Block a user