nomid2 commited on
Commit
5a88fbd
·
verified ·
1 Parent(s): 44438be

Update entrypoint-wrapper.sh

Browse files
Files changed (1) hide show
  1. entrypoint-wrapper.sh +38 -24
entrypoint-wrapper.sh CHANGED
@@ -1,36 +1,50 @@
1
  #!/bin/sh
2
 
3
- TARGET_LOG_DIR="/app/logs" # 这是 CMD 指定的日志目录
4
- APP_DATA_DIR="/data" # 这是应用数据目录
5
 
6
- echo "Entrypoint wrapper: Checking persistent storage mount points..."
 
 
 
 
 
7
 
8
- # 检查 /app/logs 是否存在并且可写 (由 Hugging Face 挂载)
9
- if [ ! -d "$TARGET_LOG_DIR" ]; then
10
- echo "ERROR: Log directory $TARGET_LOG_DIR (persistent mount) does not exist!"
11
- # exit 1 # 如果此目录必须存在,可以选择退出
12
- elif [ ! -w "$TARGET_LOG_DIR" ]; then
13
- echo "ERROR: Log directory $TARGET_LOG_DIR (persistent mount) is not writable!"
14
- # exit 1
 
15
  else
16
- echo "Log directory $TARGET_LOG_DIR is present and writable."
 
 
 
 
17
  fi
18
 
19
- # 检查 /data 是否存在并且可写 (由 Hugging Face 挂载)
20
- if [ ! -d "$APP_DATA_DIR" ]; then
21
- echo "ERROR: Data directory $APP_DATA_DIR (persistent mount) does not exist!"
22
- # exit 1
23
- elif [ ! -w "$APP_DATA_DIR" ]; then
24
- echo "ERROR: Data directory $APP_DATA_DIR (persistent mount) is not writable!"
25
- # exit 1
26
  else
27
- echo "Data directory $APP_DATA_DIR is present and writable."
28
- fi
 
29
 
30
- # 之前的错误是应用尝试 "mkdir /app/logs" 或 "mkdir /data/logs"
31
- # 这暗示应用自己会尝试创建这些目录,而不是直接在其中写文件。
32
- # 如果 HF 已经正确挂载了这些目录,应用应该能直接使用它们。
33
- # 我们不再在脚本中尝试 `mkdir -p` 这些挂载点本身或其父目录。
 
 
 
 
 
34
 
35
  echo "Entrypoint wrapper: Starting application with arguments: $@"
 
36
  exec /one-api "$@"
 
1
  #!/bin/sh
2
 
3
+ # 目标:在容器的临时文件系统中创建应用程序可能需要的目录
 
4
 
5
+ # Dockerfile CMD 获取的日志目录路径
6
+ APP_LOG_DIR_CMD="/app/logs"
7
+ # 应用程序之前尝试创建的 /data/logs (作为备用)
8
+ # APP_DATA_LOGS_FALLBACK="/data/logs" # 如果您还想处理这个,可以取消注释
9
+ # SQLite 数据可能存放的 /data 目录
10
+ SQLITE_DATA_DIR="/data"
11
 
12
+ echo "Entrypoint wrapper: Attempting to create necessary directories in ephemeral FS..."
13
+
14
+ # 1. CMD 中指定的 --log-dir /app/logs 创建目录
15
+ echo "Ensuring directory $APP_LOG_DIR_CMD exists..."
16
+ mkdir -p "$APP_LOG_DIR_CMD"
17
+ if [ $? -ne 0 ]; then
18
+ # 如果创建失败,记录错误,但让应用继续尝试(应用自己也会报错)
19
+ echo "ERROR: Failed to create $APP_LOG_DIR_CMD in ephemeral FS. App logging to this path might fail."
20
  else
21
+ echo "$APP_LOG_DIR_CMD is ready or was created in ephemeral FS."
22
+ # 可选:如果怀疑权限问题,可以尝试更改所有权/权限
23
+ # 这假设 Hugging Face 以 uid 1000 运行容器
24
+ # chown -R 1000:1000 "$APP_LOG_DIR_CMD"
25
+ # chmod -R 755 "$APP_LOG_DIR_CMD"
26
  fi
27
 
28
+ # 2. 为 SQLite 数据创建 /data 目录 (如果应用使用它)
29
+ echo "Ensuring directory $SQLITE_DATA_DIR exists (for SQLite)..."
30
+ mkdir -p "$SQLITE_DATA_DIR"
31
+ if [ $? -ne 0 ]; then
32
+ echo "ERROR: Failed to create $SQLITE_DATA_DIR in ephemeral FS. App data storage might fail."
 
 
33
  else
34
+ echo "$SQLITE_DATA_DIR is ready or was created in ephemeral FS."
35
+ # chown -R 1000:1000 "$SQLITE_DATA_DIR"
36
+ # chmod -R 755 "$SQLITE_DATA_DIR"
37
 
38
+ # (可选)如果应用可能仍然尝试创建 /data/logs
39
+ # echo "Ensuring directory $APP_DATA_LOGS_FALLBACK exists (if app falls back to it)..."
40
+ # mkdir -p "$APP_DATA_LOGS_FALLBACK"
41
+ # if [ $? -ne 0 ]; then
42
+ # echo "Warning: Failed to create $APP_DATA_LOGS_FALLBACK."
43
+ # else
44
+ # echo "$APP_DATA_LOGS_FALLBACK is ready or was created."
45
+ # fi
46
+ fi
47
 
48
  echo "Entrypoint wrapper: Starting application with arguments: $@"
49
+ # 执行原始的 ENTRYPOINT (/one-api) 并传递 CMD 参数
50
  exec /one-api "$@"