renminwansui1976 commited on
Commit
65adde0
·
unverified ·
1 Parent(s): f30d395

更新 Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -40
Dockerfile CHANGED
@@ -1,63 +1,37 @@
1
  # syntax=docker/dockerfile:1
2
 
3
- # --- 阶段 1: 编译阶段 ---
4
- # 使用 1.94.0 确保支持最新的异步语法
5
  FROM rust:1.94.0-slim-bookworm AS builder
6
  WORKDIR /app
7
 
8
- # 安装编译所需的底层工具
9
- # pkg-config libssl-dev reqwest (tls) 必须的
10
- # build-essential 是编译 nix 等原生 C 绑定库必须的
11
- RUN apt-get update && apt-get install -y --no-install-recommends \
12
- pkg-config \
13
- libssl-dev \
14
- build-essential \
15
  && rm -rf /var/lib/apt/lists/*
16
 
17
- # 拷贝并编译
18
  COPY Cargo.toml ./
19
- # 如果你有 Cargo.lock 请务必加上这一行: COPY Cargo.lock ./
20
  COPY src ./src
 
21
 
22
- # 编译二进制文件
23
- RUN cargo build --release
24
-
25
- # --- 阶段 2: 运行阶段 ---
26
  FROM mcr.microsoft.com/playwright:v1.51.0-jammy AS runtime
27
 
28
- # 安装运行时必要的库(libssl3 reqwest 运行必须的)
29
- RUN apt-get update && apt-get install -y --no-install-recommends \
30
- ca-certificates \
31
- tini \
32
- libssl3 \
33
  && rm -rf /var/lib/apt/lists/*
34
 
35
- # 处理 UID 1000 冲突:将 Playwright 镜像默认的 pwuser 改名为 user
36
- RUN EXISTING_USER=$(id -nu 1000) && \
37
- if [ "$EXISTING_USER" != "user" ]; then \
38
- usermod -l user $EXISTING_USER && \
39
- groupmod -n user $EXISTING_USER && \
40
- usermod -d /home/user -m user; \
41
- fi || (useradd -m -u 1000 -s /bin/bash user || true)
42
-
43
- # 准备代码中定义的 WORKSPACE 目录
44
- RUN mkdir -p /home/user/.openclaw/workspace /home/user/app && \
45
  chown -R 1000:1000 /home/user
46
 
47
- WORKDIR /home/user/app
48
-
49
- # 拷贝编译好的二进制文件
50
  COPY --from=builder /app/target/release/openclaw-hf-sync /usr/local/bin/openclaw-hf-sync
51
  RUN chmod +x /usr/local/bin/openclaw-hf-sync
52
 
53
- # 设置环境变量
54
  ENV HOME=/home/user
 
55
  USER 1000:1000
56
 
57
- # 启动逻辑:使用 tini 启动你的同步程序
58
- # 注意:你需要通过 CMD 传入你想要运行的实际爬虫或程序名
59
- # 例如:ENTRYPOINT + ["python", "app.py"]
60
  ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/openclaw-hf-sync"]
61
-
62
- # 默认命令(如果没有提供参数,则保持容器不退出)
63
- CMD ["bash"]
 
1
  # syntax=docker/dockerfile:1
2
 
 
 
3
  FROM rust:1.94.0-slim-bookworm AS builder
4
  WORKDIR /app
5
 
6
+ RUN apt-get update \
7
+ && apt-get install -y --no-install-recommends build-essential pkg-config ca-certificates \
 
 
 
 
 
8
  && rm -rf /var/lib/apt/lists/*
9
 
 
10
  COPY Cargo.toml ./
11
+ COPY Cargo.lock ./
12
  COPY src ./src
13
+ RUN cargo build --release --locked
14
 
 
 
 
 
15
  FROM mcr.microsoft.com/playwright:v1.51.0-jammy AS runtime
16
 
17
+ RUN apt-get update \
18
+ && apt-get install -y --no-install-recommends ca-certificates tini \
 
 
 
19
  && rm -rf /var/lib/apt/lists/*
20
 
21
+ RUN set -eux; \
22
+ if ! getent passwd 1000 >/dev/null; then \
23
+ groupadd -g 1000 user; \
24
+ useradd -m -u 1000 -g 1000 -s /bin/bash user; \
25
+ fi; \
26
+ mkdir -p /home/user/.openclaw/workspace /home/user/app; \
 
 
 
 
27
  chown -R 1000:1000 /home/user
28
 
 
 
 
29
  COPY --from=builder /app/target/release/openclaw-hf-sync /usr/local/bin/openclaw-hf-sync
30
  RUN chmod +x /usr/local/bin/openclaw-hf-sync
31
 
 
32
  ENV HOME=/home/user
33
+ WORKDIR /home/user/app
34
  USER 1000:1000
35
 
 
 
 
36
  ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/openclaw-hf-sync"]
37
+ CMD ["bash"]