使用DOCKER环境变量替换网关链接

This commit is contained in:
2025-09-12 17:33:07 +08:00
parent bd2d066314
commit 1714ff19f5
6 changed files with 59 additions and 17 deletions
-9
View File
@@ -1,12 +1,3 @@
#后台地址
VITE_GLOB_API_URL=https://api.xjygjk.com
#健康监测工具报警-websocket
VITE_GLOB_API_YIN_JI=wss://api.xjygjk.com/health-watch/websocket/watchMonitor
#应急求助-websocket
VITE_GLOB_API_JIAN_CE=wss://api.xjygjk.com/health-emergency/websocket/emergency
#西安云坐席
VITE_GLOB_API_XIAN_YUN=wss://api.xjygjk.com/health-emergency/websocket/emergency3
#银川云坐席
VITE_GLOB_API_YIN_CHUAN=wss://api.xjygjk.com/health-emergency/websocket/emergency4
+12 -1
View File
@@ -2,6 +2,9 @@ FROM nginx
MAINTAINER jeecgos@163.com
VOLUME /tmp
ENV LANG en_US.UTF-8
ENV VITE_GLOB_API_URL https://api.xjygjk.com
RUN echo "server { \
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
location / { \
@@ -18,4 +21,12 @@ RUN echo "server { \
&& mkdir -p /var/www/html
ADD dist/ /var/www/html/
EXPOSE 3101
# 👇 新增:复制启动脚本(用于运行时替换环境变量)
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# 使用脚本作为入口点
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 80
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
# 设置默认值(构建时 .env 不生效时兜底)
: ${VITE_GLOB_API_URL:=https://api.xjygjk.com}
# 替换 index.html 中的占位符
sed -i "s@__VITE_GLOB_API_URL__@$VITE_GLOB_API_URL@g" /var/www/html/index.html
exec nginx -g 'daemon off;'
+4 -1
View File
@@ -7,7 +7,10 @@
<title>应急就医服务中心</title>
<!-- 全局配置 -->
<script>
window._CONFIG = {};
// 默认值(可选)
window.__APP_ENV__ = {
VITE_GLOB_API_URL: '__VITE_GLOB_API_URL__', // 占位符,Docker 替换
};
window._AMapSecurityConfig = {
securityJsCode: "1b3b86585c863d22db1e7f7636a9e495",
}
+2
View File
@@ -18,6 +18,7 @@
"@turf/turf": "^6.5.0",
"autoprefixer": "^10.4.16",
"axios": "^1.6.2",
"cnpm": "^9.4.0",
"dayjs": "^1.11.10",
"echarts": "5.4.3",
"echarts-gl": "^2.0.9",
@@ -32,6 +33,7 @@
"postcss-px2rem": "^0.3.0",
"prettier": "^3.1.0",
"qs": "^6.11.2",
"vite": "^7.0.5",
"vue-router": "^4.2.5",
"vue3-seamless-scroll": "^2.0.1"
},
+32 -6
View File
@@ -1,11 +1,37 @@
// export function getAppEnvConfig() {
// const ENV = import.meta.env;
// const { VITE_GLOB_API_URL, VITE_GLOB_API_YIN_JI, VITE_GLOB_API_JIAN_CE, VITE_GLOB_API_XIAN_YUN, VITE_GLOB_API_YIN_CHUAN } = ENV;
// return {
// VITE_GLOB_API_URL,
// VITE_GLOB_API_YIN_JI,
// VITE_GLOB_API_JIAN_CE,
// VITE_GLOB_API_XIAN_YUN,
// VITE_GLOB_API_YIN_CHUAN,
// };
// }
export function getAppEnvConfig() {
const ENV = import.meta.env;
const { VITE_GLOB_API_URL, VITE_GLOB_API_YIN_JI, VITE_GLOB_API_JIAN_CE, VITE_GLOB_API_XIAN_YUN, VITE_GLOB_API_YIN_CHUAN } = ENV;
// 1. 优先:运行时注入(Docker)
const runtimeEnv = (window as any).__APP_ENV__;
// 2. 其次:构建时环境变量(.env 文件)
const buildEnv = import.meta.env;
// 3. 获取 VITE_GLOB_API_URL:运行时 > 构建时 > 默认值
const VITE_GLOB_API_URL = runtimeEnv?.VITE_GLOB_API_URL || buildEnv.VITE_GLOB_API_URL || 'https://api.xjygjk.com'; // 默认兜底
// 解析主机名和协议
const url = new URL(VITE_GLOB_API_URL);
const host = url.hostname;
const protocol = url.protocol === 'https:' ? 'wss://' : 'ws://';
return {
VITE_GLOB_API_URL,
VITE_GLOB_API_YIN_JI,
VITE_GLOB_API_JIAN_CE,
VITE_GLOB_API_XIAN_YUN,
VITE_GLOB_API_YIN_CHUAN,
// WebSocket 地址基于 VITE_GLOB_API_URL 动态生成
VITE_GLOB_API_YIN_JI: `${protocol}${host}/health-watch/websocket/watchMonitor`,
VITE_GLOB_API_JIAN_CE: `${protocol}${host}/health-emergency/websocket/emergency`,
VITE_GLOB_API_XIAN_YUN: `${protocol}${host}/health-emergency/websocket/emergency3`,
VITE_GLOB_API_YIN_CHUAN: `${protocol}${host}/health-emergency/websocket/emergency4`,
};
}