补回 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:
2026-10-18 17:28:45 +08:00
parent f0d678c5b6
commit d083d8524b
17 changed files with 1252 additions and 13 deletions
+62
View File
@@ -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"