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 *;` + } } } }