# 使用 nightly 版本的 Rust 来支持不稳定功能 FROM rustlang/rust:nightly-bookworm-slim as builder # 安装构建依赖 RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ clang \ protobuf-compiler \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 复制 Cargo.toml COPY Cargo.toml ./ # 创建虚拟源文件以允许依赖解析 RUN mkdir -p src && \ echo '#[tokio::main]' > src/main.rs && \ echo 'async fn main() { println!("Building dependencies..."); }' >> src/main.rs # 预构建依赖(不使用 --locked 标志) RUN cargo build --release RUN rm -rf src target/release/deps/cursor_api* # 复制所有源代码 COPY src ./src # 检查并复制补丁目录(如果存在) COPY patch ./patch || echo "No patch directory found, continuing..." # 复制其他文件 COPY tools ./tools COPY build.rs ./ # 构建应用 RUN cargo build --release # 多阶段构建 - 运行时镜像 FROM debian:bookworm-slim # 安装运行时依赖 RUN apt-get update && apt-get install -y \ ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean WORKDIR /app # 从构建阶段复制可执行文件 COPY --from=builder /app/target/release/cursor-api /usr/local/bin/cursor-api # 创建非 root 用户 RUN groupadd -r user && useradd -r -g user -u 1000 user # 设置正确的权限 RUN chmod +x /usr/local/bin/cursor-api # 暴露 Hugging Face Spaces 标准端口 EXPOSE 7860 # 切换到非 root 用户 USER user # 启动命令 - 确保应用监听 7860 端口 CMD ["cursor-api"]