LogLInk1K commited on
Commit
2add0ae
·
verified ·
1 Parent(s): 4efdfd7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +75 -15
Dockerfile CHANGED
@@ -3,21 +3,81 @@ WORKDIR /opt/openlist
3
  USER root
4
  EXPOSE 5244
5
 
6
- ENTRYPOINT []
7
- RUN chmod +x ./openlist
8
-
9
- # 必须让主程序运行,HF 探测到 5244 端口通了,才不会杀掉你的进程
10
- CMD ./openlist server & \
11
- PID=$!; \
 
 
12
  sleep 5; \
13
- echo "--- [SUCCESS] 只要你看到这行,说明 HF 没杀我 ---"; \
14
- i=0; \
15
- while true; do \
16
- echo "LOG_HEARTBEAT_$i"; \
17
- i=$((i+1)); \
18
  sleep 2; \
19
- # 每隔 10 次心跳,探测一下端口,确保自己还活着
20
- if [ $((i % 10)) -eq 0 ]; then \
21
- wget -q --spider http://127.0.0.1:5244/api/public/settings && echo "--- [PORT 5244 IS ALIVE] ---"; \
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  fi; \
23
- done
 
 
 
 
 
 
 
 
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"