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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +19 -24
Dockerfile CHANGED
@@ -1,40 +1,35 @@
1
- # 构建阶段
2
- FROM --platform=$TARGETPLATFORM rustlang/rust:nightly-bookworm-slim as builder
3
-
4
- # TARGETARCH会自动由Docker buildx设置
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
38
 
39
  WORKDIR /app
40
  ENV TZ=Asia/Shanghai
 
1
+ # 使用固定架构的基础镜像而不是动态平台
2
+ FROM rustlang/rust:nightly-bookworm-slim as builder
 
 
 
3
 
4
  WORKDIR /app
5
 
 
 
 
 
 
 
 
6
  # 安装依赖
7
  RUN apt-get update && \
8
  apt-get install -y --no-install-recommends \
9
  build-essential protobuf-compiler pkg-config libssl-dev nodejs npm openssl \
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
+ # 复制整个项目
13
+ COPY . .
14
+
15
+ # 检查项目结构并构建
16
+ RUN if [ ! -f Cargo.toml ]; then \
17
+ echo "Error: Cargo.toml not found in project root" && exit 1; \
18
+ fi && \
19
+ # 根据当前CPU架构选择优化标志
20
+ ARCH=$(uname -m) && \
21
+ if [ "$ARCH" = "x86_64" ]; then \
22
+ TARGET_CPU="x86-64-v2"; \
23
+ elif [ "$ARCH" = "aarch64" ]; then \
24
+ TARGET_CPU="neoverse-n1"; \
25
+ else \
26
+ echo "Unsupported architecture: $ARCH" && exit 1; \
27
+ fi && \
28
  RUSTFLAGS="-C link-arg=-s -C target-cpu=$TARGET_CPU" cargo +nightly build --release && \
29
  cp target/release/cursor-api /app/cursor-api
30
 
31
  # 运行阶段
32
+ FROM debian:bookworm-slim
33
 
34
  WORKDIR /app
35
  ENV TZ=Asia/Shanghai