diff --git a/src/admin/.dockerignore b/src/admin/.dockerignore
index 82cabad..542efd8 100644
--- a/src/admin/.dockerignore
+++ b/src/admin/.dockerignore
@@ -2,7 +2,6 @@ node_modules
dist
.git
.gitignore
-.env
.env.local
.env.*.local
npm-debug.log*
diff --git a/src/frontend/.dockerignore b/src/frontend/.dockerignore
index 82cabad..27082db 100644
--- a/src/frontend/.dockerignore
+++ b/src/frontend/.dockerignore
@@ -1,8 +1,6 @@
node_modules
-dist
.git
.gitignore
-.env
.env.local
.env.*.local
npm-debug.log*
diff --git a/src/frontend/.env b/src/frontend/.env
index d91b694..1cc88eb 100644
--- a/src/frontend/.env
+++ b/src/frontend/.env
@@ -1 +1,3 @@
+# 生产环境配置
+# API 基础 URL - 使用相对路径,由 nginx 代理到后端
VITE_API_BASE_URL=/api
\ No newline at end of file
diff --git a/src/frontend/.env.development b/src/frontend/.env.development
new file mode 100644
index 0000000..84f716d
--- /dev/null
+++ b/src/frontend/.env.development
@@ -0,0 +1,3 @@
+# 开发环境配置
+# API 基础 URL - 开发环境直接访问后端
+VITE_API_BASE_URL=/api
diff --git a/src/frontend/.env.production b/src/frontend/.env.production
new file mode 100644
index 0000000..2905033
--- /dev/null
+++ b/src/frontend/.env.production
@@ -0,0 +1,3 @@
+# 生产环境配置
+# API 基础 URL - 使用相对路径,由 nginx 代理到后端
+VITE_API_BASE_URL=/api
diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile
index eda9b14..402fa06 100644
--- a/src/frontend/Dockerfile
+++ b/src/frontend/Dockerfile
@@ -1,25 +1,8 @@
-# 构建阶段
-FROM node:20-alpine AS builder
-
-WORKDIR /app
-
-# 复制 package 文件
-COPY package*.json ./
-
-# 安装依赖
-RUN npm install
-
-# 复制源代码
-COPY . .
-
-# 构建生产版本
-RUN npm run build
-
-# 生产阶段
+# 生产阶段 - 直接使用本地构建的 dist
FROM nginx:alpine
-# 复制构建产物到 nginx
-COPY --from=builder /app/dist /usr/share/nginx/html
+# 复制本地构建产物到 nginx
+COPY dist /usr/share/nginx/html
# 复制 nginx 配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
diff --git a/src/frontend/src/App.vue b/src/frontend/src/App.vue
index e9ed0a0..4a44774 100644
--- a/src/frontend/src/App.vue
+++ b/src/frontend/src/App.vue
@@ -1,6 +1,7 @@
+
+
diff --git a/src/frontend/src/env.d.ts b/src/frontend/src/env.d.ts
new file mode 100644
index 0000000..d326cba
--- /dev/null
+++ b/src/frontend/src/env.d.ts
@@ -0,0 +1,4 @@
+// 构建信息类型定义
+declare const __BUILD_TIME__: string
+declare const __API_BASE_URL__: string
+declare const __BUILD_MODE__: string
diff --git a/src/frontend/vite.config.ts b/src/frontend/vite.config.ts
index 1b84f1d..190658f 100644
--- a/src/frontend/vite.config.ts
+++ b/src/frontend/vite.config.ts
@@ -1,28 +1,37 @@
-import { defineConfig } from 'vite'
+import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { fileURLToPath, URL } from 'node:url'
// https://vite.dev/config/
-export default defineConfig({
- plugins: [vue()],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- },
- server: {
- port: 5173,
- proxy: {
- '/api': {
- target: 'http://localhost:5000',
- changeOrigin: true
+export default defineConfig(({ mode }) => {
+ const env = loadEnv(mode, process.cwd(), '')
+
+ return {
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
}
- }
- },
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: `@use "@/styles/variables" as *;`
+ },
+ define: {
+ __BUILD_TIME__: JSON.stringify(new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })),
+ __API_BASE_URL__: JSON.stringify(env.VITE_API_BASE_URL || '/api'),
+ __BUILD_MODE__: JSON.stringify(mode)
+ },
+ server: {
+ port: 5173,
+ proxy: {
+ '/api': {
+ target: 'http://localhost:5000',
+ changeOrigin: true
+ }
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: `@use "@/styles/variables" as *;`
+ }
}
}
}