Spaces:
Build error
Build error
# 构建阶段 | |
FROM --platform=$TARGETPLATFORM rustlang/rust:nightly-bookworm-slim as builder | |
# TARGETARCH会自动由Docker buildx设置 | |
ARG TARGETARCH | |
WORKDIR /app | |
# 先复制Cargo.toml和Cargo.lock文件以利用Docker缓存 | |
COPY Cargo.toml Cargo.lock* ./ | |
# 创建一个临时的src目录和main.rs,这样cargo可以解析依赖 | |
RUN mkdir -p src && \ | |
echo "fn main() {println!(\"placeholder\");}" > src/main.rs && \ | |
cargo fetch | |
# 安装依赖 | |
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/* | |
# 复制源代码 | |
COPY src ./src | |
COPY build.rs* ./ | |
COPY proto* ./proto/ | |
# 构建项目 | |
RUN case "$TARGETARCH" in \ | |
amd64) TARGET_CPU="x86-64-v2" ;; \ | |
arm64) TARGET_CPU="neoverse-n1" ;; \ | |
*) echo "Unsupported architecture: $TARGETARCH" && exit 1 ;; \ | |
esac && \ | |
RUSTFLAGS="-C link-arg=-s -C target-cpu=$TARGET_CPU" cargo +nightly build --release && \ | |
cp target/release/cursor-api /app/cursor-api | |
# 运行阶段 | |
FROM --platform=$TARGETPLATFORM 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 | |
ENV PORT=3000 | |
EXPOSE ${PORT} | |
USER cursorapi | |
CMD ["./cursor-api"] |