Spaces:
Runtime error
Runtime error
| FROM openlistteam/openlist:latest | |
| WORKDIR /opt/openlist | |
| USER root | |
| EXPOSE 5244 | |
| CMD sh -c "\ | |
| ./openlist server & PID=\$!; \ | |
| sleep 5; \ | |
| echo '⏳ 正在启动服务...'; \ | |
| i=0; while ! wget -q --spider http://127.0.0.1:5244/api/public/settings; do \ | |
| sleep 2; i=\$((i+1)); \ | |
| [ \$i -ge 15 ] && echo '❌ 服务启动超时' && kill \$PID && exit 1; \ | |
| done; \ | |
| \ | |
| [ -z \"\$OPENLIST_ADMIN_PASSWORD\" ] && echo '❌ 未设置密码' && exit 1; \ | |
| \ | |
| echo '🔑 正在登录...'; \ | |
| TOKEN=\$(wget -qO- --post-data=\"{\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"\$OPENLIST_ADMIN_PASSWORD\\\"}\" \ | |
| --header='Content-Type: application/json' http://127.0.0.1:5244/api/auth/login 2>/dev/null | grep -o '\"token\":\"[^\"]*\"' | cut -d'\"' -f4); \ | |
| \ | |
| if [ \${#TOKEN} -gt 20 ]; then \ | |
| echo '🚀 登录成功'; \ | |
| for n in 1 2 3 4 5 6 7 8 9 10; do \ | |
| BODY=\$(printenv STORAGE_JSON_\$n); \ | |
| [ -n \"\$BODY\" ] || continue; \ | |
| \ | |
| echo \"\$BODY\" > /tmp/p.json; \ | |
| if grep -q '\"mount_path\"' /tmp/p.json; then \ | |
| printf \"📦 配置 \$n: \"; \ | |
| wget -qO- --post-file=/tmp/p.json \ | |
| --header=\"Content-Type: application/json\" \ | |
| --header=\"Authorization: \$TOKEN\" \ | |
| http://127.0.0.1:5244/api/admin/storage/create 2>/dev/null | grep -o '\"message\":\"[^\"]*\"' || echo '完成'; \ | |
| fi; \ | |
| rm -f /tmp/p.json; \ | |
| done; \ | |
| echo '✅ 所有初始化任务已完成!'; \ | |
| else \ | |
| echo '❌ 认证失败'; kill \$PID; exit 1; \ | |
| fi; \ | |
| wait \$PID" |