Spaces:
Running
Running
| # Hugging Face Spaces Dockerfile - v4.1.3 | |
| # 在构建时从 GitHub 拉取 v4.1.3 代码 | |
| # --- Frontend Build Stage --- | |
| FROM node:20-slim AS frontend-builder | |
| WORKDIR /app | |
| # 安装 git | |
| RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* | |
| # 克隆代码并切换到 v4.1.3 标签 | |
| RUN git clone https://github.com/lbjlaq/Antigravity-Manager.git . && \ | |
| git fetch --tags && \ | |
| echo "=== Available tags ===" && \ | |
| git tag -l | grep v4 | tail -10 && \ | |
| echo "=== Checking out v4.1.3 ===" && \ | |
| git checkout v4.1.3 && \ | |
| echo "=== Current version: $(git describe --tags) ===" && \ | |
| echo "=== Commit: $(git rev-parse HEAD) ===" | |
| # 构建前端 | |
| RUN npm install && npm run build | |
| # --- Backend Build Stage --- | |
| FROM rust:1.85-slim AS backend-builder | |
| WORKDIR /app | |
| # 安装构建依赖 | |
| RUN apt-get update && apt-get install -y \ | |
| git \ | |
| pkg-config \ | |
| libssl-dev \ | |
| libsqlite3-dev \ | |
| libgtk-3-dev \ | |
| libwebkit2gtk-4.1-dev \ | |
| libayatana-appindicator3-dev \ | |
| librsvg2-dev \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 克隆代码并切换到 v4.1.3 标签 | |
| RUN git clone https://github.com/lbjlaq/Antigravity-Manager.git . && \ | |
| git fetch --tags && \ | |
| echo "=== Checking out v4.1.3 ===" && \ | |
| git checkout v4.1.3 && \ | |
| echo "=== Current version: $(git describe --tags) ===" | |
| # 构建后端 | |
| WORKDIR /app/src-tauri | |
| RUN cargo build --release --bin antigravity_tools | |
| # --- Final Runtime Stage --- | |
| FROM debian:bookworm-slim | |
| WORKDIR /app | |
| # 安装运行时依赖 | |
| RUN apt-get update && apt-get install -y \ | |
| libssl3 \ | |
| libsqlite3-0 \ | |
| ca-certificates \ | |
| libgtk-3-0 \ | |
| libwebkit2gtk-4.1-0 \ | |
| libayatana-appindicator3-1 \ | |
| librsvg2-2 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 复制构建产物 | |
| COPY --from=backend-builder /app/src-tauri/target/release/antigravity_tools /app/antigravity-tools | |
| COPY --from=frontend-builder /app/dist /app/dist | |
| # 设置环境变量 | |
| ENV ABV_DIST_PATH=/app/dist | |
| ENV RUST_LOG=info | |
| ENV API_KEY=sk-365d6f2fe26a475fb07cfe9aff787211 | |
| # Hugging Face Spaces 要求使用 7860 端口 | |
| EXPOSE 7860 | |
| # 创建数据目录 | |
| RUN mkdir -p /data/.antigravity_tools | |
| # 设置数据目录环境变量(HF Spaces 持久化存储) | |
| ENV HOME=/data | |
| # 创建完整的配置文件 | |
| RUN echo '{"language":"en","theme":"system","auto_refresh":true,"refresh_interval":15,"auto_sync":false,"sync_interval":5,"default_export_path":null,"auto_launch":false,"scheduled_warmup":{"enabled":false,"monitored_models":["gemini-3-flash","claude-sonnet-4-5","gemini-3-pro-high","gemini-3-pro-image"]},"quota_protection":{"enabled":false,"threshold_percentage":10,"monitored_models":["claude-sonnet-4-5","gemini-3-pro-high","gemini-3-flash","gemini-3-pro-image"]},"pinned_quota_models":{"models":["gemini-3-pro-high","gemini-3-flash","gemini-3-pro-image","claude-sonnet-4-5-thinking"]},"proxy":{"enabled":true,"allow_lan_access":true,"auth_mode":"off","port":7860,"api_key":"sk-365d6f2fe26a475fb07cfe9aff787211","admin_password":null,"auto_start":true,"custom_mapping":{},"request_timeout":120,"enable_logging":true,"upstream_proxy":{"enabled":false,"url":""},"zai":{"enabled":false,"base_url":"https://api.z.ai/api/anthropic","api_key":"","dispatch_mode":"off","model_mapping":{},"models":{"opus":"glm-4.7","sonnet":"glm-4.7","haiku":"glm-4.7"},"mcp":{"enabled":false,"web_search_enabled":false,"web_reader_enabled":false,"vision_enabled":false}},"scheduling":{"sticky_session_enabled":true,"sticky_session_ttl":3600,"rate_limit_retry_enabled":true,"rate_limit_retry_max_attempts":3,"rate_limit_retry_delay_ms":1000,"quota_protection_enabled":false,"pinned_quota_models":[]},"experimental":{"enable_signature_cache":true,"enable_tool_loop_recovery":true,"enable_cross_model_checks":true,"enable_usage_scaling":false,"context_compression_threshold_l1":0.4,"context_compression_threshold_l2":0.55,"context_compression_threshold_l3":0.7}}}' > /data/.antigravity_tools/gui_config.json | |
| # 运行应用(Headless 模式) | |
| CMD ["/app/antigravity-tools", "--headless"] | |