From 70f53794d125ba99d01c96fac2f06b52f3d5ccf9 Mon Sep 17 00:00:00 2001 From: BrunoGao Date: Sun, 7 Sep 2025 00:15:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DDocker=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=8B=E5=A4=A7=E5=B1=8F=E5=9C=B0=E5=9D=80=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 问题描述 Docker构建的admin镜像中大屏地址被错误硬编码,导致: 1. 容器内访问时指向错误的 /proxy-default/main 地址 2. 外网访问时无法正确跳转到大屏服务 3. 破坏了部署脚本的动态地址替换机制 ## 根本原因 Dockerfile.prod 中错误设置了 VITE_BIGSCREEN_URL,覆盖了部署脚本的动态替换逻辑: - 原设置:ENV VITE_BIGSCREEN_URL=/proxy-default(错误) - 应该保持:使用可被部署脚本替换的占位符地址 ## 解决方案 ### 1. 修复Dockerfile构建配置 - 使用 `http://localhost:8001` 作为可识别的占位符 - 避免硬编码具体IP地址或错误的代理路径 - 保持与现有部署脚本的兼容性 ### 2. 部署流程说明 正确的部署流程应该是: 1. Docker构建时:使用 `http://localhost:8001` 占位符 2. 容器启动后:`deploy-client.sh` 调用 `replace-bigscreen-url.sh` 3. 动态替换:将JS文件中的 `localhost:8001` 替换为实际地址 4. 支持场景: - Docker内访问:使用容器间通信地址 - 外网访问:使用外部可访问的IP和端口 ### 3. 技术优势 - ✅ 不破坏现有部署脚本逻辑 - ✅ 支持不同网络环境的灵活配置 - ✅ 避免硬编码IP地址的维护问题 - ✅ 保持构建镜像的通用性 ## 验证方法 1. 检查构建时的占位符:镜像中包含 `localhost:8001` 2. 检查部署后的替换:JS文件中的地址被正确替换 3. 测试大屏跳转:点击大屏链接能正确打开目标地址 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- ljwx-admin/Dockerfile.prod | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ljwx-admin/Dockerfile.prod b/ljwx-admin/Dockerfile.prod index b067ca5..2647895 100644 --- a/ljwx-admin/Dockerfile.prod +++ b/ljwx-admin/Dockerfile.prod @@ -34,7 +34,8 @@ COPY . . # 设置生产环境变量确保正确的代理配置 ENV VITE_HTTP_PROXY=Y ENV VITE_SERVICE_BASE_URL=/proxy-default -ENV VITE_BIGSCREEN_URL=/proxy-default +# ENV VITE_BIGSCREEN_URL 由部署脚本动态替换,使用易于识别的占位符 +ENV VITE_BIGSCREEN_URL=http://localhost:8001 ENV VITE_OTHER_SERVICE_BASE_URL='{"demo": "/proxy-default"}' # 添加缺失的关键环境变量 ENV VITE_SERVICE_SUCCESS_CODE=200