LogLInk1K commited on
Commit
fe991e6
·
verified ·
1 Parent(s): a33dfc6

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +37 -27
Dockerfile CHANGED
@@ -1,83 +1,93 @@
1
- FROM openlistteam/openlist:v4.1.9
2
  WORKDIR /opt/openlist
3
  USER root
4
  EXPOSE 5244
5
 
6
- CMD sh -c "\
 
 
 
 
 
 
 
 
 
 
7
  # 1. 启动服务
8
  ./openlist server & \
9
- PID=\$!; \
10
  \
11
- # 2. 等待并检查服务是否真的启动成功
12
  echo '⏳ 正在等待 OpenList 服务启动...'; \
13
  echo ''; \
14
  sleep 5; \
15
  \
16
  MAX_RETRIES=10; \
17
  while ! wget -q --spider http://127.0.0.1:5244/api/public/settings; do \
 
18
  sleep 2; \
19
- MAX_RETRIES=\$((MAX_RETRIES - 1)); \
20
- if [ \$MAX_RETRIES -le 0 ]; then \
21
  echo ''; \
22
  echo '❌ 错误: 服务启动超时,请检查日志。'; \
23
  exit 1; \
24
  fi; \
25
  done; \
 
26
  echo ''; \
27
  echo '✅ 服务已就绪!'; \
28
  echo ''; \
29
  \
30
- # 3. 环境变量及密码有效性强校验
31
- if [ -z \"\$OPENLIST_ADMIN_PASSWORD\" ]; then \
32
- echo '❌ 错误: 未检测到 OPENLIST_ADMIN_PASSWORD。请在 Secrets 中配置!'; \
33
- wait \$PID; exit 1; \
34
  fi; \
35
  \
36
- # 4. 获取 Token
37
  echo '🔑 正在获取 Token...'; \
38
- RAW_TOKEN=\$(wget -qO- --timeout=5 --post-data=\"{\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"\$OPENLIST_ADMIN_PASSWORD\\\"}\" \
39
  --header='Content-Type: application/json' \
40
  http://127.0.0.1:5244/api/auth/login); \
41
  \
42
- TOKEN=\$(echo \$RAW_TOKEN | grep -o '\"token\":\"[^\"]*\"' | cut -d'\"' -f4); \
43
  \
44
  # 5. 执行注入逻辑
45
- if [ -n \"\$TOKEN\" ] && [ \"\${#TOKEN}\" -gt 20 ]; then \
46
  echo '🚀 登录成功,正在解析配置...'; \
47
  echo ''; \
48
  FOUND_VALID=0; \
49
  for i in 1 2 3 4 5 6 7 8 9 10; do \
50
- eval JSON=\\\$STORAGE_JSON_\$i; \
51
  \
52
- if [ -z \"\$JSON\" ]; then \
53
  continue; \
54
  fi; \
55
  \
56
  FOUND_VALID=1; \
57
- if echo \"\$JSON\" | grep -qv '\"mount_path\"'; then \
58
- echo \"⚠️ 错误: STORAGE_JSON_\$i 已检测到但内容格式错误(缺少 mount_path),已跳过。\"; \
59
- echo \"💡 提示: 请检查是否填入了正确的 JSON 字符串。\"; \
60
  continue; \
61
  fi; \
62
  \
63
- echo \"📦 正在添加第 \$i 个存储配置...\"; \
64
- RES=\$(wget -qO- --timeout=5 --post-data=\"\$JSON\" \
65
  --header=\"Content-Type: application/json\" \
66
- --header=\"Authorization: \$TOKEN\" \
67
  http://127.0.0.1:5244/api/admin/storage/create); \
68
- echo \"\$RES\"; \
69
  echo ''; \
70
  done; \
71
  \
72
- if [ \"\$FOUND_VALID\" -eq 0 ]; then \
73
  echo 'ℹ️ 提示: 未发现有效的存储配置。'; \
74
- echo '👉 请检查 Secrets 中的 STORAGE_JSON_x 是否已填入内容,且变量名拼写正确。'; \
75
  fi; \
76
  echo '✅ 所有存储处理完成!'; \
77
  else \
78
  echo '❌ 登录失败!'; \
79
- echo \"💡 响应内容: \${RAW_TOKEN:-'请求超时或无返回'}\"; \
80
  fi; \
81
  \
82
  # 维持主进程
83
- wait \$PID"
 
1
+ FROM openlistteam/openlist:latest
2
  WORKDIR /opt/openlist
3
  USER root
4
  EXPOSE 5244
5
 
6
+ # 1. 关键修正:强行重置可能存在的 ENTRYPOINT,确保 CMD 脚本能正常执行
7
+ ENTRYPOINT []
8
+
9
+ # 2. 赋予执行权限
10
+ RUN chmod +x ./openlist
11
+
12
+ # 3. 优化后的 CMD 脚本
13
+ CMD ["sh", "-c", "\
14
+ # 强制让 stdout 变为行缓冲模式,防止日志积压
15
+ stty -F /dev/stderr sane 2>/dev/null; \
16
+ \
17
  # 1. 启动服务
18
  ./openlist server & \
19
+ PID=$!; \
20
  \
21
+ # 2. 等待并检查服务
22
  echo '⏳ 正在等待 OpenList 服务启动...'; \
23
  echo ''; \
24
  sleep 5; \
25
  \
26
  MAX_RETRIES=10; \
27
  while ! wget -q --spider http://127.0.0.1:5244/api/public/settings; do \
28
+ echo '☁️ 端口探测中...'; \
29
  sleep 2; \
30
+ MAX_RETRIES=$((MAX_RETRIES - 1)); \
31
+ if [ $MAX_RETRIES -le 0 ]; then \
32
  echo ''; \
33
  echo '❌ 错误: 服务启动超时,请检查日志。'; \
34
  exit 1; \
35
  fi; \
36
  done; \
37
+ \
38
  echo ''; \
39
  echo '✅ 服务已就绪!'; \
40
  echo ''; \
41
  \
42
+ # 3. 环境变量校验
43
+ if [ -z \"$OPENLIST_ADMIN_PASSWORD\" ]; then \
44
+ echo '❌ 错误: 未检测到 OPENLIST_ADMIN_PASSWORD。'; \
45
+ wait $PID; exit 1; \
46
  fi; \
47
  \
48
+ # 4. 获取 Token
49
  echo '🔑 正在获取 Token...'; \
50
+ RAW_TOKEN=$(wget -qO- --timeout=5 --post-data=\"{\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"$OPENLIST_ADMIN_PASSWORD\\\"}\" \
51
  --header='Content-Type: application/json' \
52
  http://127.0.0.1:5244/api/auth/login); \
53
  \
54
+ TOKEN=$(echo $RAW_TOKEN | grep -o '\"token\":\"[^\"]*\"' | cut -d'\"' -f4); \
55
  \
56
  # 5. 执行注入逻辑
57
+ if [ -n \"$TOKEN\" ] && [ \"${#TOKEN}\" -gt 20 ]; then \
58
  echo '🚀 登录成功,正在解析配置...'; \
59
  echo ''; \
60
  FOUND_VALID=0; \
61
  for i in 1 2 3 4 5 6 7 8 9 10; do \
62
+ eval JSON=\\\$STORAGE_JSON_$i; \
63
  \
64
+ if [ -z \"$JSON\" ]; then \
65
  continue; \
66
  fi; \
67
  \
68
  FOUND_VALID=1; \
69
+ if echo \"$JSON\" | grep -qv '\"mount_path\"'; then \
70
+ echo \"⚠️ 错误: STORAGE_JSON_$i 格式错误,已跳过。\"; \
 
71
  continue; \
72
  fi; \
73
  \
74
+ echo \"📦 正在添加第 $i 个存储配置...\"; \
75
+ RES=$(wget -qO- --timeout=5 --post-data=\"$JSON\" \
76
  --header=\"Content-Type: application/json\" \
77
+ --header=\"Authorization: $TOKEN\" \
78
  http://127.0.0.1:5244/api/admin/storage/create); \
79
+ echo \"$RES\"; \
80
  echo ''; \
81
  done; \
82
  \
83
+ if [ \"$FOUND_VALID\" -eq 0 ]; then \
84
  echo 'ℹ️ 提示: 未发现有效的存储配置。'; \
 
85
  fi; \
86
  echo '✅ 所有存储处理完成!'; \
87
  else \
88
  echo '❌ 登录失败!'; \
89
+ echo \"💡 响应内容: ${RAW_TOKEN:-'请求超时'}\"; \
90
  fi; \
91
  \
92
  # 维持主进程
93
+ wait $PID"]