Update Dockerfile
Browse files- 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
|
| 24 |
-
import os
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
print(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|
|
|
|
|
|
|
|
|
|
| 57 |
echo "Starting OpenClaw..."\n\
|
| 58 |
openclaw gateway --port 7860 &\n\
|
| 59 |
CLAW_PID=$!\n\
|
| 60 |
\n\
|
| 61 |
-
#
|
| 62 |
echo "*/15 * * * * root python3 /root/sync.py >> /var/log/cron.log 2>&1" > /etc/crontab\n\
|
| 63 |
cron\n\
|
| 64 |
\n\
|
| 65 |
-
#
|
| 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\
|