1guow commited on
Commit
f07cd8f
·
verified ·
1 Parent(s): 60f0d0b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +43 -26
Dockerfile CHANGED
@@ -20,29 +20,43 @@ RUN pip3 install --break-system-packages huggingface_hub
20
  RUN npm install -g openclaw@latest
21
 
22
  # --- 创建备份与恢复脚本 (sync.py) ---
23
- RUN echo '#!/usr/bin/env python3\n\
24
- import os, time, subprocess, sys\n\
25
- from huggingface_hub import HfApi, create_repo, list_repo_files, upload_folder\n\
26
- \n\
27
- BACKUP_PATH = "/root/.openclaw"\n\
28
- DATASET_REPO = os.getenv("HF_DATASET")\n\
29
- TOKEN = os.getenv("HF_TOKEN")\n\
30
- \n\
31
- def run_cmd(cmd):\n\
32
- return subprocess.run(cmd, shell=True, capture_output=True, text=True)\n\
33
- \n\
34
- def main():\n\
35
- if not DATASET_REPO or not TOKEN:\n\
36
- print("Error: HF_DATASET or HF_TOKEN not set.")\n\
37
- sys.exit(1)\n\
38
- \n\
39
- api = HfApi(token=TOKEN)\n\
40
- print(f"Backing up {BACKUP_PATH} to Dataset {DATASET_REPO}...")\n\
41
- try:\n\
42
- upload_folder(api=api, folder_path=BACKUP_PATH, repo_id=DATASET_REPO, repo_type="dataset")\n\
43
- print("Backup successful!")\n\
44
- except Exception as e:\n\
45
- print(f"Backup failed: {e}")\n\
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  \n\
47
  if __name__ == "__main__":\n\
48
  main()' > /root/sync.py
@@ -53,16 +67,19 @@ RUN echo '#!/bin/bash\n\
53
  echo "Restoring backup from HF Dataset..."\n\
54
  python3 /root/sync.py restore\n\
55
  \n\
56
- # 2. 启动 OpenClaw\n\
 
 
 
57
  echo "Starting OpenClaw..."\n\
58
  openclaw gateway --port 7860 &\n\
59
  CLAW_PID=$!\n\
60
  \n\
61
- # 3. 设置定时备份 (每15分钟)\n\
62
  echo "*/15 * * * * root python3 /root/sync.py >> /var/log/cron.log 2>&1" > /etc/crontab\n\
63
  cron\n\
64
  \n\
65
- # 4. 捕获退出信号,确保停止前做最后一次备份\n\
66
  trap "echo \\"Stopping...\\"; python3 /root/sync.py; kill $CLAW_PID; exit 0" SIGTERM SIGINT\n\
67
  \n\
68
  echo "OpenClaw is running on port 7860!"\n\
 
20
  RUN npm install -g openclaw@latest
21
 
22
  # --- 创建备份与恢复脚本 (sync.py) ---
23
+ RUN echo #!/usr/bin/env python3
24
+ import os
25
+ import sys
26
+ from huggingface_hub import snapshot_download, upload_folder
27
+
28
+ BACKUP_PATH = "/root/.openclaw"
29
+ DATASET_REPO = os.getenv("HF_DATASET")
30
+ TOKEN = os.getenv("HF_TOKEN")
31
+
32
+ if not DATASET_REPO or not TOKEN:
33
+ print("Error: HF_DATASET or HF_TOKEN not set.")
34
+ sys.exit(1)
35
+
36
+ if len(sys.argv) > 1 and sys.argv[1] == "restore":
37
+ print(f"Restoring backup from {DATASET_REPO} to {BACKUP_PATH}...")
38
+ try:
39
+ snapshot_download(
40
+ repo_id=DATASET_REPO,
41
+ repo_type="dataset",
42
+ local_dir=BACKUP_PATH,
43
+ token=TOKEN
44
+ )
45
+ print("Restore successful!")
46
+ except Exception as e:
47
+ print(f"Restore failed: {e}")
48
+ else:
49
+ print(f"Backing up {BACKUP_PATH} to {DATASET_REPO}...")
50
+ try:
51
+ upload_folder(
52
+ folder_path=BACKUP_PATH,
53
+ repo_id=DATASET_REPO,
54
+ repo_type="dataset",
55
+ token=TOKEN
56
+ )
57
+ print("Backup successful!")
58
+ except Exception as e:
59
+ print(f"Backup failed: {e}")
60
  \n\
61
  if __name__ == "__main__":\n\
62
  main()' > /root/sync.py
 
67
  echo "Restoring backup from HF Dataset..."\n\
68
  python3 /root/sync.py restore\n\
69
  \n\
70
+ # 2. 初始化 OpenClaw 配置(新增这行)
71
+ echo "Running openclaw setup..."
72
+ openclaw setup --non-interactive --set gateway.mode=local
73
+ # 3. 启动 OpenClaw\n\
74
  echo "Starting OpenClaw..."\n\
75
  openclaw gateway --port 7860 &\n\
76
  CLAW_PID=$!\n\
77
  \n\
78
+ # 4. 设置定时备份 (每15分钟)\n\
79
  echo "*/15 * * * * root python3 /root/sync.py >> /var/log/cron.log 2>&1" > /etc/crontab\n\
80
  cron\n\
81
  \n\
82
+ # 5. 捕获退出信号,确保停止前做最后一次备份\n\
83
  trap "echo \\"Stopping...\\"; python3 /root/sync.py; kill $CLAW_PID; exit 0" SIGTERM SIGINT\n\
84
  \n\
85
  echo "OpenClaw is running on port 7860!"\n\