leowuming commited on
Commit
027e47a
·
verified ·
1 Parent(s): e19885e

Update docker/docker-entrypoint.sh

Browse files
Files changed (1) hide show
  1. docker/docker-entrypoint.sh +13 -24
docker/docker-entrypoint.sh CHANGED
@@ -1,40 +1,30 @@
1
  #!/bin/bash
 
2
 
3
- # 检查 STORAGE_DIR 环境变量是否设置 (您原有的逻辑,非常好,保留)
4
  if [ -z "$STORAGE_DIR" ]; then
5
  echo "================================================================"
6
  echo "⚠️ ⚠️ ⚠️ WARNING: STORAGE_DIR environment variable is not set! ⚠️ ⚠️ ⚠️"
7
  echo ""
8
- echo "Not setting this will result in data loss on container restart since"
9
- echo "the application will not have a persistent storage location."
10
- echo "It can also result in weird errors in various parts of the application."
11
- echo ""
12
- echo "Please run the container with the official docker command at"
13
- echo "https://docs.anythingllm.com/installation-docker/quickstart"
14
- echo ""
15
- echo "⚠️ ⚠️ ⚠️ WARNING: STORAGE_DIR environment variable is not set! ⚠️ ⚠️ ⚠️"
16
  echo "================================================================"
17
  fi
18
 
19
- # ==================== 我添加的关键修复代码 ====================
20
  #
21
- # 在 Hugging Face Spaces 中,持久化存储 /data 目录默认由 root 用户拥有。
22
- # 而我们的 Node.js 应用是以一个普通的、非 root 用户身份运行的。
23
- # 这就导致了应用没有权限在 /data 目录中创建文件或文件夹,从而产生 "permission denied" 错误。
 
24
  #
25
- # 下面的命令使用 sudo 获取临时管理员权限,然后通过 `chown` 命令
26
- # 递归地 (-R) 将 /data 目录以及其下所有内容的所有权
27
- # 变更为当前正在运行此脚本的用户 ($(whoami))。
28
- #
29
- # 这样一来,当后面的 node 进程启动时,它就拥有了对 /data 目录的完全读写权限。
30
- #
31
- echo "[STARTUP SCRIPT] Fixing permissions for persistent storage directory..."
32
- sudo chown -R "$(whoami)":"$(whoami)" /data && echo "[STARTUP SCRIPT] Permissions for /data fixed successfully." || echo "[STARTUP SCRIPT] Warning: Could not fix permissions for /data. This might be okay if not running in a restricted environment."
33
  #
34
  # ======================== 修复代码结束 ========================
35
 
36
 
37
- # 启动您的应用进程 (您原有的逻辑,保持不变)
38
  {
39
  cd /app/server/ &&
40
  echo "[STARTUP SCRIPT] Running Prisma generate..." &&
@@ -53,5 +43,4 @@ sudo chown -R "$(whoami)":"$(whoami)" /data && echo "[STARTUP SCRIPT] Permission
53
  wait -n
54
 
55
  # 以那个退出的进程的退出码退出脚本
56
- exit $?```
57
-
 
1
  #!/bin/bash
2
+ set -e
3
 
4
+ # 检查 STORAGE_DIR 环境变量是否设置
5
  if [ -z "$STORAGE_DIR" ]; then
6
  echo "================================================================"
7
  echo "⚠️ ⚠️ ⚠️ WARNING: STORAGE_DIR environment variable is not set! ⚠️ ⚠️ ⚠️"
8
  echo ""
9
+ echo "Not setting this will result in data loss on container restart."
10
+ echo "Please ensure you are running this container via the official docker-compose."
 
 
 
 
 
 
11
  echo "================================================================"
12
  fi
13
 
14
+ # ==================== 关键权限修复代码 ====================
15
  #
16
+ # 在 Hugging Face Spaces 等环境中,持久化存储 (/data) 默认归 root 所有。
17
+ # 我们的 Node.js 应用以普通用户运行,因此没有写入权限。
18
+ # 下面的命令利用 sudo 将 /data 目录的所有权递归地 (-R)
19
+ # 变更为当前运行脚本的用户 (whoami),从而解决权限问题。
20
  #
21
+ echo "[STARTUP SCRIPT] Fixing permissions for persistent storage directory at /data..."
22
+ sudo chown -R "$(whoami)":"$(whoami)" /data && echo "[STARTUP SCRIPT] Permissions for /data fixed successfully." || echo "[STARTUP SCRIPT] Warning: Could not fix permissions for /data."
 
 
 
 
 
 
23
  #
24
  # ======================== 修复代码结束 ========================
25
 
26
 
27
+ # 以后台进程 (&) 的方式启动主服务器和收集器
28
  {
29
  cd /app/server/ &&
30
  echo "[STARTUP SCRIPT] Running Prisma generate..." &&
 
43
  wait -n
44
 
45
  # 以那个退出的进程的退出码退出脚本
46
+ exit $?