syw1516 commited on
Commit
ae6a42f
·
verified ·
1 Parent(s): 4978696

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +59 -58
Dockerfile CHANGED
@@ -4,13 +4,13 @@ ENV DEBIAN_FRONTEND=noninteractive
4
  ENV TZ=Etc/UTC
5
 
6
  RUN apt-get update && apt-get install -y \
7
- curl \
8
- git \
9
- python3-pip \
10
- && rm -rf /var/lib/apt/lists/*
11
 
12
  RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
13
- && apt-get install -y nodejs
14
 
15
  RUN npm install -g openclaw@latest
16
  RUN pip3 install --break-system-packages huggingface_hub -q
@@ -33,74 +33,75 @@ mkdir -p "${OPENCLAW_STATE_DIR}"/{workspace,agents/main/agent,agents/main/sessio
33
  log_info() { echo "[$(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)] [ENTRYPOINT] $1" | tee -a /var/log/openclaw/gateway.stdout.log; }\n\
34
  \n\
35
  restore_if_exists() {\n\
36
- [[ -z "${HF_TOKEN}" ]] && return 0\n\
37
- [[ -z "${BACKUP_DATASET_REPO}" ]] && return 0\n\
38
- log_info "检查备份数据..."\n\
39
- RESTORE_TEMP=$(mktemp -d)\n\
40
- if huggingface-cli download "${BACKUP_DATASET_REPO}" --repo-type dataset --token "${HF_TOKEN}" --local-dir "${RESTORE_TEMP}" 2>/dev/null; then\n\
41
- log_info "找到备份,开始恢复数据..."\n\
42
- [[ -d "${RESTORE_TEMP}/workspace" ]] && cp -r "${RESTORE_TEMP}/workspace/"* "${OPENCLAW_WORKSPACE_DIR}/" 2>/dev/null || true\n\
43
- [[ -d "${RESTORE_TEMP}/agents" ]] && cp -r "${RESTORE_TEMP}/agents/"* "${OPENCLAW_STATE_DIR}/agents/" 2>/dev/null || true\n\
44
- [[ -d "${RESTORE_TEMP}/identity" ]] && cp -r "${RESTORE_TEMP}/identity/"* "${OPENCLAW_STATE_DIR}/identity/" 2>/dev/null || true\n\
45
- log_info "数据恢复完成"\n\
46
- else\n\
47
- log_info "未找到备份,跳过恢复"\n\
48
- fi\n\
49
- rm -rf "${RESTORE_TEMP}"\n\
50
  }\n\
51
  \n\
52
  backup_on_start() {\n\
53
- [[ "${BACKUP_ENABLED}" != "true" ]] && return 0\n\
54
- [[ -z "${HF_TOKEN}" ]] && return 0\n\
55
- [[ -z "${BACKUP_DATASET_REPO}" ]] && return 0\n\
56
- log_info "执行启动备份..."\n\
57
- BACKUP_TEMP=$(mktemp -d)\n\
58
- cp -r "${OPENCLAW_WORKSPACE_DIR}" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
59
- cp -r "${OPENCLAW_STATE_DIR}/agents" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
60
- cp -r "${OPENCLAW_STATE_DIR}/identity" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
61
- echo "{\"backup_time\": \"$(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)\", \"trigger\": \"startup\"}" > "${BACKUP_TEMP}/backup_info.json"\n\
62
- huggingface-cli upload "${BACKUP_DATASET_REPO}" "${BACKUP_TEMP}/" --repo-type dataset --token "${HF_TOKEN}" --commit-message "Auto-backup $(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)" 2>/dev/null && log_info "启动备份完成" || log_info "启动备份失败(继续启动)"\n\
63
- rm -rf "${BACKUP_TEMP}"\n\
64
  }\n\
65
  \n\
66
  init_config() {\n\
67
- local config_file="${OPENCLAW_STATE_DIR}/openclaw.json"\n\
68
- if [[ ! -f "${config_file}" ]]; then\n\
69
- log_info "初始化 OpenClaw 配置..."\n\
70
- cat > "${config_file}" <<'"'"'EOFCONFIG'"'"'\n\
71
  {\n\
72
- "gateway": {\n\
73
- "mode": "local",\n\
74
- "bind": "lan",\n\
75
- "auth": {\n\
76
- "mode": "token"\n\
77
- }\n\
78
- },\n\
79
- "agents": {\n\
80
- "defaults": {\n\
81
- "model": {\n\
82
- "primary": "local"\n\
83
- }\n\
84
- }\n\
85
- }\n\
86
  }\n\
87
  EOFCONFIG\n\
88
- log_info "配置初始化完成"\n\
89
- fi\n\
90
  }\n\
91
  \n\
92
  main() {\n\
93
- log_info "===== OpenClaw 启动 ====="\n\
94
- init_config\n\
95
- restore_if_exists\n\
96
- backup_on_start\n\
97
- log_info "启动 OpenClaw 网关..."\n\
98
- exec openclaw gateway --bind lan --port "${OPENCLAW_GATEWAY_PORT}"\n\
99
  }\n\
100
- main "$@"\n' > /scripts/openclaw-entrypoint.sh
 
101
 
102
  RUN chmod +x /scripts/openclaw-entrypoint.sh
103
 
104
  EXPOSE 7860
105
 
106
- ENTRYPOINT ["/scripts/openclaw-entrypoint.sh"]
 
4
  ENV TZ=Etc/UTC
5
 
6
  RUN apt-get update && apt-get install -y \
7
+ curl \
8
+ git \
9
+ python3-pip \
10
+ && rm -rf /var/lib/apt/lists/*
11
 
12
  RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
13
+ && apt-get install -y nodejs
14
 
15
  RUN npm install -g openclaw@latest
16
  RUN pip3 install --break-system-packages huggingface_hub -q
 
33
  log_info() { echo "[$(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)] [ENTRYPOINT] $1" | tee -a /var/log/openclaw/gateway.stdout.log; }\n\
34
  \n\
35
  restore_if_exists() {\n\
36
+ [[ -z "${HF_TOKEN}" ]] && return 0\n\
37
+ [[ -z "${BACKUP_DATASET_REPO}" ]] && return 0\n\
38
+ log_info "检查备份数据..."\n\
39
+ RESTORE_TEMP=$(mktemp -d)\n\
40
+ if huggingface-cli download "${BACKUP_DATASET_REPO}" --repo-type dataset --token "${HF_TOKEN}" --local-dir "${RESTORE_TEMP}" 2>/dev/null; then\n\
41
+ log_info "找到备份,开始恢复数据..."\n\
42
+ [[ -d "${RESTORE_TEMP}/workspace" ]] && cp -r "${RESTORE_TEMP}/workspace/"* "${OPENCLAW_WORKSPACE_DIR}/" 2>/dev/null || true\n\
43
+ [[ -d "${RESTORE_TEMP}/agents" ]] && cp -r "${RESTORE_TEMP}/agents/"* "${OPENCLAW_STATE_DIR}/agents/" 2>/dev/null || true\n\
44
+ [[ -d "${RESTORE_TEMP}/identity" ]] && cp -r "${RESTORE_TEMP}/identity/"* "${OPENCLAW_STATE_DIR}/identity/" 2>/dev/null || true\n\
45
+ log_info "数据恢复完成"\n\
46
+ else\n\
47
+ log_info "未找到备份,跳过恢复"\n\
48
+ fi\n\
49
+ rm -rf "${RESTORE_TEMP}"\n\
50
  }\n\
51
  \n\
52
  backup_on_start() {\n\
53
+ [[ "${BACKUP_ENABLED}" != "true" ]] && return 0\n\
54
+ [[ -z "${HF_TOKEN}" ]] && return 0\n\
55
+ [[ -z "${BACKUP_DATASET_REPO}" ]] && return 0\n\
56
+ log_info "执行启动备份..."\n\
57
+ BACKUP_TEMP=$(mktemp -d)\n\
58
+ cp -r "${OPENCLAW_WORKSPACE_DIR}" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
59
+ cp -r "${OPENCLAW_STATE_DIR}/agents" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
60
+ cp -r "${OPENCLAW_STATE_DIR}/identity" "${BACKUP_TEMP}/" 2>/dev/null || true\n\
61
+ echo "{\"backup_time\": \"$(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)\", \"trigger\": \"startup\"}" > "${BACKUP_TEMP}/backup_info.json"\n\
62
+ huggingface-cli upload "${BACKUP_DATASET_REPO}" "${BACKUP_TEMP}/" --repo-type dataset --token "${HF_TOKEN}" --commit-message "Auto-backup $(date -u +%%Y-%%m-%%dT%%H:%%M:%%SZ)" 2>/dev/null && log_info "启动备份完成" || log_info "启动备份失败(继续启动)"\n\
63
+ rm -rf "${BACKUP_TEMP}"\n\
64
  }\n\
65
  \n\
66
  init_config() {\n\
67
+ local config_file="${OPENCLAW_STATE_DIR}/openclaw.json"\n\
68
+ if [[ ! -f "${config_file}" ]]; then\n\
69
+ log_info "初始化 OpenClaw 配置..."\n\
70
+ cat > "${config_file}" <<'"'"'EOFCONFIG'"'"'\n\
71
  {\n\
72
+ "gateway": {\n\
73
+ "mode": "local",\n\
74
+ "bind": "lan",\n\
75
+ "auth": {\n\
76
+ "mode": "token"\n\
77
+ }\n\
78
+ },\n\
79
+ "agents": {\n\
80
+ "defaults": {\n\
81
+ "model": {\n\
82
+ "primary": "${RAW_MODEL:-z-ai/glm4.7}"\n\
83
+ }\n\
84
+ }\n\
85
+ }\n\
86
  }\n\
87
  EOFCONFIG\n\
88
+ log_info "配置初始化完成"\n\
89
+ fi\n\
90
  }\n\
91
  \n\
92
  main() {\n\
93
+ log_info "===== OpenClaw 启动 ====="\n\
94
+ init_config\n\
95
+ restore_if_exists\n\
96
+ backup_on_start\n\
97
+ log_info "启动 OpenClaw 网关..."\n\
98
+ exec openclaw gateway --bind lan --port "${OPENCLAW_GATEWAY_PORT}"\n\
99
  }\n\
100
+ main "$@"\n\
101
+ ' > /scripts/openclaw-entrypoint.sh
102
 
103
  RUN chmod +x /scripts/openclaw-entrypoint.sh
104
 
105
  EXPOSE 7860
106
 
107
+ ENTRYPOINT ["/scripts/openclaw-entrypoint.sh"]