mirror of
https://github.com/lintsinghua/DeepAudit.git
synced 2026-10-25 18:11:29 +08:00
- Introduce three database modes: local IndexedDB, Supabase cloud, and demo mode - Update `.env.example` with comprehensive database configuration options - Add new database management components for local storage and status tracking - Implement local database initialization and configuration utilities - Update Dockerfile and docker-compose.yml to support local database environment variable - Enhance README documentation with detailed database mode explanations and usage guidance - Add configuration for output language selection in environment settings - Refactor database configuration to support flexible storage strategies - Improve error handling and configuration management for database interactions Resolves database persistence and provides users with flexible data storage options across different use cases.
178 lines
4.2 KiB
Docker
178 lines
4.2 KiB
Docker
# 多阶段构建 - 构建阶段
|
|
FROM node:18-alpine AS builder
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 禁用代理并安装 pnpm
|
|
ENV HTTP_PROXY=""
|
|
ENV HTTPS_PROXY=""
|
|
ENV http_proxy=""
|
|
ENV https_proxy=""
|
|
ENV NO_PROXY="*"
|
|
ENV no_proxy="*"
|
|
|
|
RUN npm config set registry https://registry.npmjs.org/ && \
|
|
npm config delete proxy 2>/dev/null || true && \
|
|
npm config delete https-proxy 2>/dev/null || true && \
|
|
npm config delete http-proxy 2>/dev/null || true && \
|
|
npm install -g pnpm
|
|
|
|
# 声明构建参数 - 这些参数可以在 docker build 时传入
|
|
# LLM 通用配置
|
|
ARG VITE_LLM_PROVIDER
|
|
ARG VITE_LLM_API_KEY
|
|
ARG VITE_LLM_MODEL
|
|
ARG VITE_LLM_BASE_URL
|
|
ARG VITE_LLM_TIMEOUT
|
|
ARG VITE_LLM_TEMPERATURE
|
|
ARG VITE_LLM_MAX_TOKENS
|
|
|
|
# Google Gemini 配置
|
|
ARG VITE_GEMINI_API_KEY
|
|
ARG VITE_GEMINI_MODEL
|
|
ARG VITE_GEMINI_TIMEOUT_MS
|
|
|
|
# OpenAI 配置
|
|
ARG VITE_OPENAI_API_KEY
|
|
ARG VITE_OPENAI_MODEL
|
|
ARG VITE_OPENAI_BASE_URL
|
|
|
|
# Claude 配置
|
|
ARG VITE_CLAUDE_API_KEY
|
|
ARG VITE_CLAUDE_MODEL
|
|
|
|
# 通义千问配置
|
|
ARG VITE_QWEN_API_KEY
|
|
ARG VITE_QWEN_MODEL
|
|
|
|
# DeepSeek 配置
|
|
ARG VITE_DEEPSEEK_API_KEY
|
|
ARG VITE_DEEPSEEK_MODEL
|
|
|
|
# 智谱AI 配置
|
|
ARG VITE_ZHIPU_API_KEY
|
|
ARG VITE_ZHIPU_MODEL
|
|
|
|
# Moonshot 配置
|
|
ARG VITE_MOONSHOT_API_KEY
|
|
ARG VITE_MOONSHOT_MODEL
|
|
|
|
# 百度文心一言配置
|
|
ARG VITE_BAIDU_API_KEY
|
|
ARG VITE_BAIDU_MODEL
|
|
|
|
# MiniMax 配置
|
|
ARG VITE_MINIMAX_API_KEY
|
|
ARG VITE_MINIMAX_MODEL
|
|
|
|
# 豆包配置
|
|
ARG VITE_DOUBAO_API_KEY
|
|
ARG VITE_DOUBAO_MODEL
|
|
|
|
# Ollama 配置
|
|
ARG VITE_OLLAMA_API_KEY
|
|
ARG VITE_OLLAMA_MODEL
|
|
ARG VITE_OLLAMA_BASE_URL
|
|
|
|
# Supabase 配置
|
|
ARG VITE_SUPABASE_URL
|
|
ARG VITE_SUPABASE_ANON_KEY
|
|
|
|
# GitHub 配置
|
|
ARG VITE_GITHUB_TOKEN
|
|
|
|
# 数据库配置
|
|
ARG VITE_USE_LOCAL_DB
|
|
|
|
# 应用配置
|
|
ARG VITE_APP_ID
|
|
ARG VITE_MAX_ANALYZE_FILES
|
|
ARG VITE_LLM_CONCURRENCY
|
|
ARG VITE_LLM_GAP_MS
|
|
ARG VITE_OUTPUT_LANGUAGE
|
|
|
|
# 将构建参数转换为环境变量(Vite 构建时会读取这些环境变量)
|
|
ENV VITE_LLM_PROVIDER=$VITE_LLM_PROVIDER
|
|
ENV VITE_LLM_API_KEY=$VITE_LLM_API_KEY
|
|
ENV VITE_LLM_MODEL=$VITE_LLM_MODEL
|
|
ENV VITE_LLM_BASE_URL=$VITE_LLM_BASE_URL
|
|
ENV VITE_LLM_TIMEOUT=$VITE_LLM_TIMEOUT
|
|
ENV VITE_LLM_TEMPERATURE=$VITE_LLM_TEMPERATURE
|
|
ENV VITE_LLM_MAX_TOKENS=$VITE_LLM_MAX_TOKENS
|
|
|
|
ENV VITE_GEMINI_API_KEY=$VITE_GEMINI_API_KEY
|
|
ENV VITE_GEMINI_MODEL=$VITE_GEMINI_MODEL
|
|
ENV VITE_GEMINI_TIMEOUT_MS=$VITE_GEMINI_TIMEOUT_MS
|
|
|
|
ENV VITE_OPENAI_API_KEY=$VITE_OPENAI_API_KEY
|
|
ENV VITE_OPENAI_MODEL=$VITE_OPENAI_MODEL
|
|
ENV VITE_OPENAI_BASE_URL=$VITE_OPENAI_BASE_URL
|
|
|
|
ENV VITE_CLAUDE_API_KEY=$VITE_CLAUDE_API_KEY
|
|
ENV VITE_CLAUDE_MODEL=$VITE_CLAUDE_MODEL
|
|
|
|
ENV VITE_QWEN_API_KEY=$VITE_QWEN_API_KEY
|
|
ENV VITE_QWEN_MODEL=$VITE_QWEN_MODEL
|
|
|
|
ENV VITE_DEEPSEEK_API_KEY=$VITE_DEEPSEEK_API_KEY
|
|
ENV VITE_DEEPSEEK_MODEL=$VITE_DEEPSEEK_MODEL
|
|
|
|
ENV VITE_ZHIPU_API_KEY=$VITE_ZHIPU_API_KEY
|
|
ENV VITE_ZHIPU_MODEL=$VITE_ZHIPU_MODEL
|
|
|
|
ENV VITE_MOONSHOT_API_KEY=$VITE_MOONSHOT_API_KEY
|
|
ENV VITE_MOONSHOT_MODEL=$VITE_MOONSHOT_MODEL
|
|
|
|
ENV VITE_BAIDU_API_KEY=$VITE_BAIDU_API_KEY
|
|
ENV VITE_BAIDU_MODEL=$VITE_BAIDU_MODEL
|
|
|
|
ENV VITE_MINIMAX_API_KEY=$VITE_MINIMAX_API_KEY
|
|
ENV VITE_MINIMAX_MODEL=$VITE_MINIMAX_MODEL
|
|
|
|
ENV VITE_DOUBAO_API_KEY=$VITE_DOUBAO_API_KEY
|
|
ENV VITE_DOUBAO_MODEL=$VITE_DOUBAO_MODEL
|
|
|
|
ENV VITE_OLLAMA_API_KEY=$VITE_OLLAMA_API_KEY
|
|
ENV VITE_OLLAMA_MODEL=$VITE_OLLAMA_MODEL
|
|
ENV VITE_OLLAMA_BASE_URL=$VITE_OLLAMA_BASE_URL
|
|
|
|
ENV VITE_USE_LOCAL_DB=$VITE_USE_LOCAL_DB
|
|
ENV VITE_SUPABASE_URL=$VITE_SUPABASE_URL
|
|
ENV VITE_SUPABASE_ANON_KEY=$VITE_SUPABASE_ANON_KEY
|
|
|
|
ENV VITE_GITHUB_TOKEN=$VITE_GITHUB_TOKEN
|
|
|
|
ENV VITE_APP_ID=$VITE_APP_ID
|
|
ENV VITE_MAX_ANALYZE_FILES=$VITE_MAX_ANALYZE_FILES
|
|
ENV VITE_LLM_CONCURRENCY=$VITE_LLM_CONCURRENCY
|
|
ENV VITE_LLM_GAP_MS=$VITE_LLM_GAP_MS
|
|
ENV VITE_OUTPUT_LANGUAGE=$VITE_OUTPUT_LANGUAGE
|
|
|
|
# 复制依赖文件
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
# 安装依赖
|
|
RUN pnpm install --no-frozen-lockfile
|
|
|
|
# 复制项目文件(不包括 .env,因为我们使用构建参数)
|
|
COPY . .
|
|
|
|
# 构建应用(环境变量会在构建时被 Vite 读取并硬编码到代码中)
|
|
RUN pnpm build
|
|
|
|
# 生产阶段 - 使用 nginx 提供静态文件服务
|
|
FROM nginx:alpine
|
|
|
|
# 复制自定义 nginx 配置
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
|
|
# 从构建阶段复制构建产物
|
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
|
|
# 暴露端口
|
|
EXPOSE 80
|
|
|
|
# 启动 nginx
|
|
CMD ["nginx", "-g", "daemon off;"]
|