Spaces:
Paused
Paused
Update Dockerfile
Browse files- 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
|
| 7 |
-
|
| 8 |
&& rm -rf /var/lib/apt/lists/*
|
| 9 |
|
| 10 |
-
# 2. 安装
|
| 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 |
-
#
|
| 27 |
ENV PORT=7860 \
|
| 28 |
-
HOME=/root
|
| 29 |
-
VSCODE_CLI_DISABLE_KEYCHAIN_ENCRYPTION=true
|
| 30 |
|
| 31 |
-
#
|
| 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 |
-
|
|
|
|
| 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 |
-
#
|
| 69 |
RUN echo "#!/bin/bash\n\
|
| 70 |
set -e\n\
|
| 71 |
-
mkdir -p /root/.openclaw
|
| 72 |
python3 /usr/local/bin/sync.py restore\n\
|
| 73 |
\n\
|
| 74 |
-
#
|
| 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
|