takatorury commited on
Commit
acab921
·
verified ·
1 Parent(s): 2610f09

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +23 -2
Dockerfile CHANGED
@@ -5,12 +5,33 @@ FROM --platform=$TARGETPLATFORM rustlang/rust:nightly-bookworm-slim as builder
5
  ARG TARGETARCH
6
 
7
  WORKDIR /app
 
 
 
 
 
 
 
 
 
8
  RUN apt-get update && \
9
  apt-get install -y --no-install-recommends \
10
  build-essential protobuf-compiler pkg-config libssl-dev nodejs npm openssl \
11
  && rm -rf /var/lib/apt/lists/*
12
- COPY . .
13
- 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
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  # 运行阶段
16
  FROM --platform=$TARGETPLATFORM debian:bookworm-slim
 
5
  ARG TARGETARCH
6
 
7
  WORKDIR /app
8
+
9
+ # 先复制Cargo.toml和Cargo.lock文件以利用Docker缓存
10
+ COPY Cargo.toml Cargo.lock* ./
11
+ # 创建一个临时的src目录和main.rs,这样cargo可以解析依赖
12
+ RUN mkdir -p src && \
13
+ echo "fn main() {println!(\"placeholder\");}" > src/main.rs && \
14
+ cargo fetch
15
+
16
+ # 安装依赖
17
  RUN apt-get update && \
18
  apt-get install -y --no-install-recommends \
19
  build-essential protobuf-compiler pkg-config libssl-dev nodejs npm openssl \
20
  && rm -rf /var/lib/apt/lists/*
21
+
22
+ # 复制源代码
23
+ COPY src ./src
24
+ COPY build.rs* ./
25
+ COPY proto* ./proto/
26
+
27
+ # 构建项目
28
+ RUN case "$TARGETARCH" in \
29
+ amd64) TARGET_CPU="x86-64-v2" ;; \
30
+ arm64) TARGET_CPU="neoverse-n1" ;; \
31
+ *) echo "Unsupported architecture: $TARGETARCH" && exit 1 ;; \
32
+ esac && \
33
+ RUSTFLAGS="-C link-arg=-s -C target-cpu=$TARGET_CPU" cargo +nightly build --release && \
34
+ cp target/release/cursor-api /app/cursor-api
35
 
36
  # 运行阶段
37
  FROM --platform=$TARGETPLATFORM debian:bookworm-slim