8900 commited on
Commit
9d17588
·
verified ·
1 Parent(s): bf1f380

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +61 -1
Dockerfile CHANGED
@@ -7,6 +7,66 @@ COPY entrypoint.sh /app/entrypoint.sh
7
  COPY hf-sync-manager.mjs /app/hf-sync-manager.mjs
8
  COPY security-check.sh /app/security-check.sh
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  RUN chmod +x /app/entrypoint.sh \
11
  /app/security-check.sh && \
12
  mkdir -p /home/user && \
@@ -20,4 +80,4 @@ USER node
20
 
21
  EXPOSE 7860
22
 
23
- ENTRYPOINT ["/app/entrypoint.sh"]
 
7
  COPY hf-sync-manager.mjs /app/hf-sync-manager.mjs
8
  COPY security-check.sh /app/security-check.sh
9
 
10
+ # ============================================================
11
+ # PATCH: fix meta.lastTouchedAt triggering unnecessary gateway restarts
12
+ # See: https://github.com/openclaw/openclaw/issues/11744
13
+ #
14
+ # meta.lastTouchedAt is updated on every config write but is not in
15
+ # BASE_RELOAD_RULES, so matchRule() returns null and triggers a full
16
+ # gateway restart (SIGUSR1) on every config save.
17
+ #
18
+ # Fix: inject {prefix:"meta",kind:"none"} into BASE_RELOAD_RULES
19
+ # so meta.* changes are classified as no-ops.
20
+ # ============================================================
21
+ RUN node -e " \
22
+ const fs = require('fs'); \
23
+ const path = require('path'); \
24
+ const { execSync } = require('child_process'); \
25
+ \
26
+ function findBundles() { \
27
+ try { \
28
+ const out = execSync('find /app -name \"gateway-cli*.js\" -not -path \"*/node_modules/*\" 2>/dev/null').toString().trim(); \
29
+ return out ? out.split('\n').filter(Boolean) : []; \
30
+ } catch(e) { return []; } \
31
+ } \
32
+ \
33
+ const bundles = findBundles(); \
34
+ if (bundles.length === 0) { \
35
+ console.log('[patch] No gateway-cli bundle found - skipping'); \
36
+ process.exit(0); \
37
+ } \
38
+ \
39
+ let patched = 0; \
40
+ bundles.forEach(function(file) { \
41
+ let src = fs.readFileSync(file, 'utf-8'); \
42
+ if (src.includes('prefix:\"meta\"') || src.includes(\"prefix:'meta'\")) { \
43
+ console.log('[patch] Already patched: ' + file); \
44
+ return; \
45
+ } \
46
+ const patterns = [ \
47
+ ['{prefix:\"channels\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"channels\",kind:'], \
48
+ ['{prefix:\"update\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"update\",kind:'], \
49
+ ['{prefix:\"agents\",kind:', '{prefix:\"meta\",kind:\"none\"},{prefix:\"agents\",kind:'] \
50
+ ]; \
51
+ let applied = false; \
52
+ for (let i = 0; i < patterns.length; i++) { \
53
+ if (src.includes(patterns[i][0])) { \
54
+ src = src.replace(patterns[i][0], patterns[i][1]); \
55
+ applied = true; \
56
+ break; \
57
+ } \
58
+ } \
59
+ if (applied) { \
60
+ fs.writeFileSync(file, src, 'utf-8'); \
61
+ console.log('[patch] Patched: ' + file); \
62
+ patched++; \
63
+ } else { \
64
+ console.log('[patch] Pattern not found in: ' + file + ' (may need manual check)'); \
65
+ } \
66
+ }); \
67
+ console.log('[patch] Done. Files patched: ' + patched + '/' + bundles.length); \
68
+ " || echo "[patch] Patch step failed (non-fatal, continuing build)"
69
+
70
  RUN chmod +x /app/entrypoint.sh \
71
  /app/security-check.sh && \
72
  mkdir -p /home/user && \
 
80
 
81
  EXPOSE 7860
82
 
83
+ ENTRYPOINT ["/app/entrypoint.sh"]