Antigravity-Manager / Dockerfile
erlyhuang's picture
Update to v4.1.3
4b5fd6c verified
# 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"]