From 9ab54c7640a7685c706ff30de7b5a7837ae6d6b8 Mon Sep 17 00:00:00 2001 From: zerosaturation Date: Tue, 16 Jun 2026 01:12:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9websocket=E7=9A=84?= =?UTF-8?q?=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/deploy.sh | 25 ++++++++++++++++++++++--- frontend/.env.development | 2 +- frontend/.env.production | 4 ++-- frontend/manifest.json | 2 +- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/docker/deploy.sh b/docker/deploy.sh index ef567ec..43404b1 100755 --- a/docker/deploy.sh +++ b/docker/deploy.sh @@ -196,6 +196,13 @@ do_build() { # ./build.sh --no-cache ./build.sh + # ⚠️ 必须用 --no-cache 强制重建! + # Dockerfile.services 的 `COPY backend/ ./` 在 BuildKit 下缓存粒度不可靠, + # 即使 config.go 改了也可能命中旧的 builder 层,导致 binary 还是旧的。 + # 表现:容器内 /app/gateway 的 mtime 早于镜像创建时间,改的代码没生效。 + # ./build.sh --no-cache + + if [ $? -ne 0 ]; then print_msg "$RED" "❌ 构建失败" exit 1 @@ -338,9 +345,13 @@ if ! command -v docker-compose &> /dev/null; then fi # 配置 Docker 镜像加速器 + log rotation +# ⚠️ 关键: 只有 daemon.json 真正变化时才 restart docker。 +# 否则 systemctl restart docker 会让所有容器(包括另一个项目 TopFans-activity-admin +# 的 topfans-adminbackend / topfans-adminfrontend)瞬间停止,即便是 restart:always +# 也可能因为网络命名空间重建 + postgres 依赖时序问题而启动失败。 echo '📦 配置 Docker 镜像加速器 + log rotation...' mkdir -p /etc/docker -cat > /etc/docker/daemon.json << 'DOCKER_EOF' +cat > /etc/docker/daemon.json.new << 'DOCKER_EOF' { "registry-mirrors": [ "https://docker.1ms.run", @@ -353,8 +364,16 @@ cat > /etc/docker/daemon.json << 'DOCKER_EOF' } } DOCKER_EOF -systemctl restart docker -echo '✅ 镜像加速器 + log rotation 配置完成' + +# 对比 md5,只有内容变化时才覆盖 + restart +if [ ! -f /etc/docker/daemon.json ] || [ "$(md5sum /etc/docker/daemon.json | awk '{print $1}')" != "$(md5sum /etc/docker/daemon.json.new | awk '{print $1}')" ]; then + mv /etc/docker/daemon.json.new /etc/docker/daemon.json + systemctl restart docker + echo '✅ daemon.json 已更新,已重启 Docker' +else + rm -f /etc/docker/daemon.json.new + echo '✅ daemon.json 未变化,跳过 restart docker(不影响其他项目容器)' +fi echo '✅ Docker 环境就绪' ENDSSH diff --git a/frontend/.env.development b/frontend/.env.development index 474a46c..b74ab5f 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -5,7 +5,7 @@ VITE_API_BASE_URL=https://api.topfans.online # WebSocket 地址:如与 API 同源可省略(自动从 VITE_API_BASE_URL 推导 http→ws、https→wss) # 独立部署时直接覆盖,例如:ws://192.168.110.60:8081 VITE_WS_BASE_URL=ws://192.168.110.60:8080 -# VITE_WS_BASE_URL=ws://101.132.250.62:8080 +# VITE_WS_BASE_URL=wss://api.topfans.online # WebSocket 路径:用于 Nginx 反向代理(前端连接的完整 URL = VITE_WS_BASE_URL + VITE_WS_AI_CHAT_PATH) # 需与后端 backend/.env 的 WS_AI_CHAT_PATH 保持一致 # Nginx 示例:location /ai-chat { proxy_pass http://gateway:8080; ... } diff --git a/frontend/.env.production b/frontend/.env.production index 1abd2bd..302db81 100644 --- a/frontend/.env.production +++ b/frontend/.env.production @@ -3,8 +3,8 @@ VITE_API_BASE_URL=https://api.topfans.online # WebSocket 地址:生产环境使用 wss(与 HTTPS 对应),如 WS 部署在独立端口/域名可覆盖 # 走 Nginx 反向代理时建议改为同源 wss://api.topfans.online,由 Nginx 转发到后端 ws://gateway:8080 -# VITE_WS_BASE_URL=wss://api.topfans.online -VITE_WS_BASE_URL=ws://101.132.250.62:8080 +VITE_WS_BASE_URL=wss://api.topfans.online +# VITE_WS_BASE_URL=ws://101.132.250.62:8080 # WebSocket 路径:与后端 backend/.env 的 WS_AI_CHAT_PATH 保持一致 VITE_WS_AI_CHAT_PATH=/ai-chat VITE_USE_MOCK_API=false diff --git a/frontend/manifest.json b/frontend/manifest.json index 88bef2f..ec8d237 100644 --- a/frontend/manifest.json +++ b/frontend/manifest.json @@ -3,7 +3,7 @@ "appid" : "__UNI__F199FF4", "description" : "", "versionName" : "1.0.5", - "versionCode" : 113, + "versionCode" : 114, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : {