StarrySkyWorld commited on
Commit
95a4231
·
verified ·
1 Parent(s): 1fdd3a8

Update entrypoint.sh

Browse files
Files changed (1) hide show
  1. entrypoint.sh +31 -16
entrypoint.sh CHANGED
@@ -1,29 +1,44 @@
1
  #!/bin/sh
2
  set -eu
3
 
4
- echo "[entrypoint] start..." >&2
5
-
6
  if [ -z "${APP_ARCHIVE_URL:-}" ]; then
7
- echo "[entrypoint] ERROR: APP_ARCHIVE_URL is not set." >&2
8
- sleep 30
9
  exit 1
10
  fi
11
 
12
- APP_DIR="/opt/app"
13
- mkdir -p "$APP_DIR"
14
- cd "$APP_DIR"
15
-
16
  ARCHIVE_FILE="app_archive"
17
 
18
- echo "[entrypoint] downloading..." >&2
19
- curl -fsSL "$APP_ARCHIVE_URL" -o "$ARCHIVE_FILE"
 
20
 
21
- echo "[entrypoint] extracting..." >&2
22
- # 强制解压到当前目录
23
- unzip -oq "$ARCHIVE_FILE" 2>/dev/null || tar -xzf "$ARCHIVE_FILE" 2>/dev/null
 
 
 
 
 
 
 
24
 
25
- echo "[entrypoint] after extract:" >&2
26
- ls -R .
 
 
 
 
 
 
 
 
 
27
 
28
- echo "[entrypoint] launching app..." >&2
 
29
  exec uvicorn app:app --host 0.0.0.0 --port 7860
 
1
  #!/bin/sh
2
  set -eu
3
 
4
+ # 1. 环境检查
 
5
  if [ -z "${APP_ARCHIVE_URL:-}" ]; then
6
+ echo "Error: APP_ARCHIVE_URL is not set." >&2
 
7
  exit 1
8
  fi
9
 
10
+ # 2. 准备目录
11
+ mkdir -p /opt/app
12
+ cd /opt/app
 
13
  ARCHIVE_FILE="app_archive"
14
 
15
+ # 3. 清洗 Cloudflare 变量 (核心修正:去除换行、空格、单双引号)
16
+ CF_ID="$(printf '%s' "${CF_ACCESS_CLIENT_ID:-}" | tr -d '\r\n "\047')"
17
+ CF_SECRET="$(printf '%s' "${CF_ACCESS_CLIENT_SECRET:-}" | tr -d '\r\n "\047')"
18
 
19
+ # 4. 组装 Curl (含浏览器伪装,防止 WAF 拦截)
20
+ # -f: 失败报错 -s: 静默 -S: 出错时显示 -L: 跟随重定向
21
+ UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
22
+ set -- -fsSL -A "$UA" "$APP_ARCHIVE_URL" -o "$ARCHIVE_FILE"
23
+
24
+ if [ -n "$CF_ID" ] && [ -n "$CF_SECRET" ]; then
25
+ set -- -H "CF-Access-Client-Id: $CF_ID" \
26
+ -H "CF-Access-Client-Secret: $CF_SECRET" \
27
+ "$@"
28
+ fi
29
 
30
+ # 5. 下载
31
+ echo "[entrypoint] Downloading..." >&2
32
+ if ! curl "$@"; then
33
+ echo "Error: Download failed." >&2
34
+ exit 1
35
+ fi
36
+
37
+ # 6. 解压
38
+ echo "[entrypoint] Extracting..." >&2
39
+ unzip -oq "$ARCHIVE_FILE" 2>/dev/null || tar -xzf "$ARCHIVE_FILE" 2>/dev/null
40
+ rm -f "$ARCHIVE_FILE"
41
 
42
+ # 7. 启动
43
+ echo "[entrypoint] Starting app..." >&2
44
  exec uvicorn app:app --host 0.0.0.0 --port 7860