Update entrypoint.sh
Browse files- 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 的
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
fi
|
| 27 |
mkdir -p "$HOME/.codex"
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
|
|
|
| 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
|