kyle-ai commited on
Commit
665d4fc
·
verified ·
1 Parent(s): 0a56da9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -50
Dockerfile CHANGED
@@ -1,21 +1,13 @@
1
  # 核心镜像
2
  FROM node:22-slim
3
 
4
- # 1. 安装系统依赖
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
- git openssh-client build-essential python3 python3-pip \
7
- g++ make ca-certificates procps curl tar findutils \
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
- # 2. 安装 VS Code CLI
11
- RUN curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz && \
12
- mkdir -p ./vscode_tmp && \
13
- tar -xf vscode_cli.tar.gz -C ./vscode_tmp && \
14
- find ./vscode_tmp -type f -name "code" -exec mv {} /usr/local/bin/code \; && \
15
- chmod +x /usr/local/bin/code && \
16
- rm -rf vscode_cli.tar.gz ./vscode_tmp
17
-
18
- # 3. 安装 Python 依赖
19
  RUN pip3 install --no-cache-dir huggingface_hub --break-system-packages
20
 
21
  # --- OpenClaw 安装逻辑 ---
@@ -23,12 +15,11 @@ ARG OPENCLAW_VERSION=2026.2.17
23
  ARG CACHEBUST=35
24
  RUN npm install -g openclaw@${OPENCLAW_VERSION} --registry=https://registry.npmjs.org/ --unsafe-perm=true --foreground-scripts && npm cache clean --force
25
 
26
- # 5. 设置环境变量
27
  ENV PORT=7860 \
28
- HOME=/root \
29
- VSCODE_CLI_DISABLE_KEYCHAIN_ENCRYPTION=true
30
 
31
- # 6. 同步引擎 (仅负责业务数据,不再备份 VSCode 凭证防止干扰)
32
  RUN echo 'import os, sys, tarfile\n\
33
  from huggingface_hub import HfApi, hf_hub_download\n\
34
  from datetime import datetime, timedelta\n\
@@ -59,49 +50,20 @@ def backup():\n\
59
  with tarfile.open(name, "w:gz") as tar:\n\
60
  if os.path.exists("/root/.openclaw"): tar.add("/root/.openclaw", arcname=".openclaw")\n\
61
  api.upload_file(path_or_fileobj=name, path_in_repo=name, repo_id=repo_id, repo_type="dataset", token=token)\n\
62
- except Exception as e: print(f"备份成功")\n\
 
63
  \n\
64
  if __name__ == "__main__":\n\
65
  if len(sys.argv) > 1 and sys.argv[1] == "backup": backup()\n\
66
  else: restore()' > /usr/local/bin/sync.py
67
 
68
- # 7. 终极启动脚本
69
  RUN echo "#!/bin/bash\n\
70
  set -e\n\
71
- mkdir -p /root/.openclaw /root/.vscode/cli\n\
72
  python3 /usr/local/bin/sync.py restore\n\
73
  \n\
74
- # --- 彻底重 VSCode 状态,强制其读取 Token ---\n\
75
- echo \"--- [VSCode] 清理旧凭证干扰... ---\"\n\
76
- find /root/.vscode/cli -name \"token.json\" -delete 2>/dev/null || true\n\
77
- find /root/.vscode/cli -name \"*.lock\" -delete 2>/dev/null || true\n\
78
- \n\
79
- # 固定机器 ID\n\
80
- mkdir -p /etc && echo \"hf-permanent-id-v6\" > /etc/machine-id 2>/dev/null || true\n\
81
- \n\
82
- # 确保环境变量正确导出\n\
83
- export VS_CODE_TUNNEL_ACCESS_TOKEN=\"\$VS_CODE_TUNNEL_ACCESS_TOKEN\"\n\
84
- export VSCODE_CLI_DISABLE_KEYCHAIN_ENCRYPTION=true\n\
85
- T_NAME=\${VSCODE_TUNNEL_NAME:-kyle-space}\n\
86
- \n\
87
- if [ -n \"\$VS_CODE_TUNNEL_ACCESS_TOKEN\" ]; then\n\
88
- echo \"--- [VSCode] 正在通过环境变量启动隧道: \$T_NAME ---\"\n\
89
- # 使用 nohup 彻底脱离控制台\n\
90
- nohup code tunnel --accept-server-license-terms --name \"\$T_NAME\" --no-sleep > /tmp/vscode.log 2>&1 &\n\
91
- \n\
92
- (sleep 12; \n\
93
- if grep -q \"github.com/login/device\" /tmp/vscode.log; then \n\
94
- echo \"--- [VSCode] ❌ Token 注入失败,GitHub 要求手动验证: ---\"; \n\
95
- grep \"github.com/login/device\" /tmp/vscode.log; \n\
96
- else\n\
97
- echo \"--- [VSCode] ✅ 恭喜!Token 验证通过,隧道已静默上线! ---\"; \n\
98
- fi) &\n\
99
- else\n\
100
- echo \"--- [VSCode] 未发现 Token,启动扫码模式 ---\"\n\
101
- code tunnel --accept-server-license-terms --name \"\$T_NAME\" --no-sleep > /tmp/vscode.log 2>&1 &\n\
102
- fi\n\
103
- \n\
104
- # OpenClaw 启动逻辑\n\
105
  CLEAN_BASE=\$(echo \"\$OPENAI_API_BASE\" | sed \"s|/chat/completions||g\" | sed \"s|/v1/|/v1|g\")\n\
106
  cat > /root/.openclaw/openclaw.json <<EOF\n\
107
  {\n\
@@ -111,7 +73,9 @@ cat > /root/.openclaw/openclaw.json <<EOF\n\
111
  }\n\
112
  EOF\n\
113
  \n\
 
114
  (while true; do sleep 1800; python3 /usr/local/bin/sync.py backup; done) &\n\
 
115
  openclaw doctor --fix\n\
116
  exec openclaw gateway run --port \$PORT\n\
117
  " > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw
 
1
  # 核心镜像
2
  FROM node:22-slim
3
 
4
+ # 1. 安装系统依赖 (去掉了 VSCode 所需的 curl, tar, findutils 等冗余工具,保留基础运行环境)
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
+ git build-essential python3 python3-pip \
7
+ ca-certificates procps \
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
+ # 2. 安装 Python 依赖 (用于同步脚本)
 
 
 
 
 
 
 
 
11
  RUN pip3 install --no-cache-dir huggingface_hub --break-system-packages
12
 
13
  # --- OpenClaw 安装逻辑 ---
 
15
  ARG CACHEBUST=35
16
  RUN npm install -g openclaw@${OPENCLAW_VERSION} --registry=https://registry.npmjs.org/ --unsafe-perm=true --foreground-scripts && npm cache clean --force
17
 
18
+ # 3. 设置环境变量 (移除了 VSCODE 相关变量)
19
  ENV PORT=7860 \
20
+ HOME=/root
 
21
 
22
+ # 4. 同步引擎 (保留 OpenClaw 数据备份逻辑)
23
  RUN echo 'import os, sys, tarfile\n\
24
  from huggingface_hub import HfApi, hf_hub_download\n\
25
  from datetime import datetime, timedelta\n\
 
50
  with tarfile.open(name, "w:gz") as tar:\n\
51
  if os.path.exists("/root/.openclaw"): tar.add("/root/.openclaw", arcname=".openclaw")\n\
52
  api.upload_file(path_or_fileobj=name, path_in_repo=name, repo_id=repo_id, repo_type="dataset", token=token)\n\
53
+ print(f"备份成功: {name}")\n\
54
+ except Exception as e: print(f"备份失败: {e}")\n\
55
  \n\
56
  if __name__ == "__main__":\n\
57
  if len(sys.argv) > 1 and sys.argv[1] == "backup": backup()\n\
58
  else: restore()' > /usr/local/bin/sync.py
59
 
60
+ # 5. 启动脚本 (去掉了所有 VSCode 的清理、ID 设置和 Tunnel 启动逻辑)
61
  RUN echo "#!/bin/bash\n\
62
  set -e\n\
63
+ mkdir -p /root/.openclaw\n\
64
  python3 /usr/local/bin/sync.py restore\n\
65
  \n\
66
+ # OpenClaw 文件生成\n\
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  CLEAN_BASE=\$(echo \"\$OPENAI_API_BASE\" | sed \"s|/chat/completions||g\" | sed \"s|/v1/|/v1|g\")\n\
68
  cat > /root/.openclaw/openclaw.json <<EOF\n\
69
  {\n\
 
73
  }\n\
74
  EOF\n\
75
  \n\
76
+ # 定时备份逻辑 (每30分钟)\n\
77
  (while true; do sleep 1800; python3 /usr/local/bin/sync.py backup; done) &\n\
78
+ \n\
79
  openclaw doctor --fix\n\
80
  exec openclaw gateway run --port \$PORT\n\
81
  " > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw