huanbao commited on
Commit
e120fc9
·
verified ·
1 Parent(s): 03763a5

Update entrypoint.sh

Browse files
Files changed (1) hide show
  1. entrypoint.sh +29 -15
entrypoint.sh CHANGED
@@ -2,9 +2,9 @@
2
  set -e
3
 
4
  # 1. 创建持久化挂载目录
5
- mkdir -p /data/.claude /data/.cloudcli /data/app /data/.taskmaster /data/.codex_data/sessions
6
 
7
- # 2. 软链接映射(常规目录)
8
  if [ ! -L "$HOME/.claude" ]; then
9
  rm -rf "$HOME/.claude"
10
  ln -s /data/.claude "$HOME/.claude"
@@ -20,20 +20,34 @@ if [ ! -L "$HOME/.taskmaster" ]; then
20
  ln -s /data/.taskmaster "$HOME/.taskmaster"
21
  fi
22
 
23
- # ==================== 针对 .codex 的 SQLite 隔离 ====================
24
- if [ -L "$HOME/.codex" ]; then
25
- rm -f "$HOME/.codex"
26
- fi
27
  mkdir -p "$HOME/.codex"
28
- # 清理持久盘上可能残留的历史损坏 SQLite
29
- rm -f /data/.codex/*.sqlite* 2>/dev/null || true
30
-
31
- # 只持久化会话日志文本
32
- mkdir -p "$HOME/.codex/sessions"
33
- if [ ! -L "$HOME/.codex/sessions" ]; then
34
- rm -rf "$HOME/.codex/sessions"
35
- ln -s /data/.codex_data/sessions "$HOME/.codex/sessions"
 
36
  fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  # ===================================================================
38
 
39
  # 3. 自动生成 Claude Code 配置
@@ -123,7 +137,7 @@ fi
123
  # 6. 全局读写赋权(随后收紧 gw_token 权限,维持 600 保密要求)
124
  chown -R 1000:1000 /data "$HOME" 2>/dev/null || true
125
  chmod -R 777 /data "$HOME" 2>/dev/null || true
126
- chmod 600 /data/.codex/gw_token 2>/dev/null || true
127
 
128
  # 7. 切换并启动
129
  mkdir -p /home/node/app 2>/dev/null || true
 
2
  set -e
3
 
4
  # 1. 创建持久化挂载目录
5
+ mkdir -p /data/.claude /data/.cloudcli /data/app /data/.taskmaster /data/.codex_data/sessions /data/.codex_data/state
6
 
7
+ # 2. 软链接常规目录
8
  if [ ! -L "$HOME/.claude" ]; then
9
  rm -rf "$HOME/.claude"
10
  ln -s /data/.claude "$HOME/.claude"
 
20
  ln -s /data/.taskmaster "$HOME/.taskmaster"
21
  fi
22
 
23
+ # ==================== 针对 .codex 的安全持久化 ====================
24
+ # 清理可能存在的旧软链接
25
+ [ -L "$HOME/.codex" ] && rm -f "$HOME/.codex"
 
26
  mkdir -p "$HOME/.codex"
27
+
28
+ # 1. 软链接 sessions(文本 jsonl 在网络卷完全安全)
29
+ [ -d "$HOME/.codex/sessions" ] && [ ! -L "$HOME/.codex/sessions" ] && rm -rf "$HOME/.codex/sessions"
30
+ ln -sf /data/.codex_data/sessions "$HOME/.codex/sessions"
31
+
32
+ # 2. 恢复 SQLite 元数据与索引(从网络卷复制到容器本地磁盘,避免网络锁损坏)
33
+ if [ -d "/data/.codex_data/state" ]; then
34
+ cp -u /data/.codex_data/state/*.sqlite* "$HOME/.codex/" 2>/dev/null || true
35
+ cp -u /data/.codex_data/state/*.jsonl "$HOME/.codex/" 2>/dev/null || true
36
  fi
37
+
38
+ # 3. 后台定时同步线程:定期将本地生成的 SQLite 和 session_index 备份回 /data
39
+ (
40
+ while true; do
41
+ sleep 60
42
+ if [ -d "$HOME/.codex" ]; then
43
+ mkdir -p /data/.codex_data/state
44
+ # 同步 sqlite 与 index 文件
45
+ cp -u "$HOME"/.codex/*.sqlite* /data/.codex_data/state/ 2>/dev/null || true
46
+ cp -u "$HOME"/.codex/*.jsonl /data/.codex_data/state/ 2>/dev/null || true
47
+ fi
48
+ done
49
+ ) &
50
+
51
  # ===================================================================
52
 
53
  # 3. 自动生成 Claude Code 配置
 
137
  # 6. 全局读写赋权(随后收紧 gw_token 权限,维持 600 保密要求)
138
  chown -R 1000:1000 /data "$HOME" 2>/dev/null || true
139
  chmod -R 777 /data "$HOME" 2>/dev/null || true
140
+ [ -f /data/.codex/gw_token ] && chmod 600 /data/.codex/gw_token 2>/dev/null || true
141
 
142
  # 7. 切换并启动
143
  mkdir -p /home/node/app 2>/dev/null || true