echo8900 commited on
Commit
3177091
·
verified ·
1 Parent(s): 08da1b7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +22 -25
Dockerfile CHANGED
@@ -3,16 +3,15 @@ FROM ghcr.io/openclaw/openclaw:latest
3
  USER root
4
 
5
  # Copy Space repo files into container
6
- COPY openclaw.json /app/openclaw-template.json
7
- COPY setup-hf-config.mjs /app/spaces/huggingface/setup-hf-config.mjs
8
- COPY entrypoint.sh /app/entrypoint.sh
9
- COPY security-check.sh /app/security-check.sh
10
- COPY diagnose.sh /app/diagnose.sh
11
 
12
- # PATCH: fix meta.lastTouchedAt triggering unnecessary gateway restarts
13
  # Issue: https://github.com/openclaw/openclaw/issues/11744
14
- # meta.lastTouchedAt is updated on every config write, but it is not in
15
- # BASE_RELOAD_RULES, so every config save triggers a full gateway restart.
16
  # Fix: inject {prefix:"meta",kind:"none"} into BASE_RELOAD_RULES.
17
  RUN node -e " \
18
  const fs = require('fs'); \
@@ -24,8 +23,7 @@ RUN node -e " \
24
  } catch(e) { return []; } \
25
  } \
26
  const bundles = findBundles(); \
27
- if (bundles.length === 0) { console.log('[patch] No bundle found - skipping'); process.exit(0); } \
28
-
29
  let patched = 0; \
30
  bundles.forEach(function(file) { \
31
  let src = fs.readFileSync(file, 'utf-8'); \
@@ -34,8 +32,8 @@ RUN node -e " \
34
  } \
35
  const patterns = [ \
36
  ['{prefix:\"channels\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"channels\",kind:'], \
37
- ['{prefix:\"update\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"update\",kind:'], \
38
- ['{prefix:\"agents\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"agents\",kind:'] \
39
  ]; \
40
  let applied = false; \
41
  for (let i = 0; i < patterns.length; i++) { \
@@ -44,24 +42,23 @@ RUN node -e " \
44
  applied = true; break; \
45
  } \
46
  } \
47
- if (applied) { fs.writeFileSync(file, src, 'utf-8'); \
48
- console.log('[patch] Patched: ' + file); patched++; } \
49
- else { console.log('[patch] Pattern not found: ' + file); \
 
 
 
50
  } \
51
  }); \
52
- console.log('[patch] Done. Patched: ' + patched + '/' + bundles.length); \
53
  " || echo "[patch] Non-fatal: patch step failed"
54
 
55
- RUN chmod +x /app/entrypoint.sh \
56
- /app/security-check.sh && \
57
- mkdir -p /home/user && \
58
- chown -R node:node /home/user && \
59
- chown node:node /app/entrypoint.sh \
60
- /app/security-check.sh \
61
- /app/openclaw-template.json \
62
- /app/spaces/huggingface/setup-hf-config.mjs
63
 
64
- USER node
65
 
66
  EXPOSE 7860
67
 
 
3
  USER root
4
 
5
  # Copy Space repo files into container
6
+ COPY openclaw.json /app/openclaw-template.json
7
+ COPY setup-hf-config.mjs /app/spaces/huggingface/setup-hf-config.mjs
8
+ COPY entrypoint.sh /app/entrypoint.sh
9
+ COPY security-check.sh /app/security-check.sh
 
10
 
11
+ # PATCH: suppress meta.lastTouchedAt from triggering gateway restarts
12
  # Issue: https://github.com/openclaw/openclaw/issues/11744
13
+ # Every config write updates meta.lastTouchedAt which is not in
14
+ # BASE_RELOAD_RULES, causing a full gateway restart on every save.
15
  # Fix: inject {prefix:"meta",kind:"none"} into BASE_RELOAD_RULES.
16
  RUN node -e " \
17
  const fs = require('fs'); \
 
23
  } catch(e) { return []; } \
24
  } \
25
  const bundles = findBundles(); \
26
+ if (bundles.length === 0) { console.log('[patch] No bundle found'); process.exit(0); } \
 
27
  let patched = 0; \
28
  bundles.forEach(function(file) { \
29
  let src = fs.readFileSync(file, 'utf-8'); \
 
32
  } \
33
  const patterns = [ \
34
  ['{prefix:\"channels\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"channels\",kind:'], \
35
+ ['{prefix:\"update\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"update\",kind:'], \
36
+ ['{prefix:\"agents\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"agents\",kind:'] \
37
  ]; \
38
  let applied = false; \
39
  for (let i = 0; i < patterns.length; i++) { \
 
42
  applied = true; break; \
43
  } \
44
  } \
45
+ if (applied) { \
46
+ fs.writeFileSync(file, src, 'utf-8'); \
47
+ console.log('[patch] Patched: ' + file); \
48
+ patched++; \
49
+ } else { \
50
+ console.log('[patch] Pattern not found in: ' + file); \
51
  } \
52
  }); \
53
+ console.log('[patch] Done. ' + patched + '/' + bundles.length + ' file(s) patched'); \
54
  " || echo "[patch] Non-fatal: patch step failed"
55
 
56
+ # Ensure /data is world-writable so HF Storage Bucket mount is accessible
57
+ RUN chmod +x /app/entrypoint.sh /app/security-check.sh && \
58
+ mkdir -p /data && chmod 777 /data && \
59
+ mkdir -p /home/user && chmod 777 /home/user
 
 
 
 
60
 
61
+ USER root
62
 
63
  EXPOSE 7860
64