Spaces:
Build error
Build error
| FROM rustlang/rust:nightly-bookworm-slim as builder | |
| WORKDIR /app | |
| # 安装依赖 | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| build-essential protobuf-compiler pkg-config libssl-dev nodejs npm openssl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 先复制Cargo配置和构建相关文件 | |
| COPY Cargo.toml Cross.toml* build.rs* .gitattributes* ./ | |
| COPY .cargo /.cargo/ | |
| # 创建基本src目录结构以利用缓存 | |
| RUN mkdir -p src && \ | |
| echo "fn main() {println!(\"placeholder\");}" > src/main.rs | |
| # 尝试获取依赖(如果可能) | |
| RUN cargo fetch || true | |
| # 现在复制真正的源代码 | |
| COPY src ./src/ | |
| COPY tests ./tests/ | |
| COPY scripts ./scripts/ | |
| COPY static ./static/ | |
| COPY tools ./tools/ | |
| # 构建 | |
| RUN ARCH=$(uname -m) && \ | |
| if [ "$ARCH" = "x86_64" ]; then \ | |
| TARGET_CPU="x86-64-v2"; \ | |
| elif [ "$ARCH" = "aarch64" ]; then \ | |
| TARGET_CPU="neoverse-n1"; \ | |
| else \ | |
| echo "Unsupported architecture: $ARCH" && exit 1; \ | |
| fi && \ | |
| RUSTFLAGS="-C link-arg=-s -C target-cpu=$TARGET_CPU" cargo +nightly build --release | |
| # 查找生成的二进制文件并复制到/app/cursor-api | |
| RUN find ./target/release -maxdepth 1 -type f -executable -not -name "*.d" -exec cp {} /app/cursor-api \; || \ | |
| (echo "No executable binary found in target/release" && ls -la ./target/release && exit 1) | |
| # 运行阶段 | |
| FROM debian:bookworm-slim | |
| WORKDIR /app | |
| ENV TZ=Asia/Shanghai | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| ca-certificates tzdata openssl \ | |
| && rm -rf /var/lib/apt/lists/* && \ | |
| groupadd -r cursorapi && useradd -r -g cursorapi cursorapi | |
| COPY --from=builder /app/cursor-api . | |
| RUN chown -R cursorapi:cursorapi /app && \ | |
| chmod +x /app/cursor-api | |
| ENV PORT=3000 | |
| EXPOSE ${PORT} | |
| USER cursorapi | |
| CMD ["./cursor-api"] |