renminwansui1976 commited on
Commit
e0d7d8e
·
unverified ·
1 Parent(s): 745bc59

更新 Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +43 -9
Dockerfile CHANGED
@@ -1,29 +1,63 @@
1
  # syntax=docker/dockerfile:1
 
 
 
2
  FROM rust:1.94.0-slim-bookworm AS builder
3
  WORKDIR /app
4
- RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev build-essential && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
 
 
 
 
 
5
  COPY Cargo.toml ./
 
6
  COPY src ./src
7
- # 这里的编译如果报错,请重点看 main.rs 的第 100-120 行左右
 
8
  RUN cargo build --release
9
 
 
10
  FROM mcr.microsoft.com/playwright:v1.51.0-jammy AS runtime
11
- RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates tini libssl3 && rm -rf /var/lib/apt/lists/*
12
 
13
- # 处理 UID 1000 冲突:直接重命名现有pwuser user
 
 
 
 
 
 
 
14
  RUN EXISTING_USER=$(id -nu 1000) && \
15
  if [ "$EXISTING_USER" != "user" ]; then \
16
  usermod -l user $EXISTING_USER && \
17
  groupmod -n user $EXISTING_USER && \
18
  usermod -d /home/user -m user; \
19
- fi || useradd -m -u 1000 -s /bin/bash user
20
 
21
- WORKDIR /home/user/app
22
- COPY --from=builder /app/target/release/openclaw-hf-sync /usr/local/bin/
23
- RUN chmod +x /usr/local/bin/openclaw-hf-sync && \
24
- mkdir -p /home/user/.openclaw/workspace && \
25
  chown -R 1000:1000 /home/user
26
 
 
 
 
 
 
 
 
27
  ENV HOME=/home/user
28
  USER 1000:1000
 
 
 
 
29
  ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/openclaw-hf-sync"]
 
 
 
 
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"]