hequ commited on
Commit
0b18167
·
verified ·
1 Parent(s): 5737236

Update docker-entrypoint.sh

Browse files
Files changed (1) hide show
  1. docker-entrypoint.sh +28 -54
docker-entrypoint.sh CHANGED
@@ -1,65 +1,39 @@
1
- #!/bin/sh
2
- set -e
3
 
4
- echo "🚀 Claude Relay Service 启动中..."
 
5
 
6
- # 检查关键环境变量
7
- if [ -z "$JWT_SECRET" ]; then
8
- echo "❌ 错误: JWT_SECRET 环境变量未设置"
9
- echo " 请在 docker-compose.yml 中设置 JWT_SECRET"
10
- echo " 例如: JWT_SECRET=your-random-secret-key-at-least-32-chars"
11
- exit 1
12
  fi
13
-
14
- if [ -z "$ENCRYPTION_KEY" ]; then
15
- echo "❌ 错误: ENCRYPTION_KEY 环境变量未设置"
16
- echo " 请在 docker-compose.yml 中设置 ENCRYPTION_KEY"
17
- echo " 例如: ENCRYPTION_KEY=your-32-character-encryption-key"
18
- exit 1
19
  fi
20
 
21
- # 检查并复制配置文件
22
- if [ ! -f "/app/config/config.js" ]; then
23
- echo "📋 检测到 config.js 不存在,从模板创建..."
24
- if [ -f "/app/config/config.example.js" ]; then
25
- cp /app/config/config.example.js /app/config/config.js
26
- echo "✅ config.js 已创建"
27
- else
28
- echo "❌ 错误: config.example.js 不存在"
29
- exit 1
30
- fi
31
- fi
32
 
33
- # 显示配置信息
34
- echo "✅ 环境配置已就绪"
35
- echo " JWT_SECRET: [已设置]"
36
- echo " ENCRYPTION_KEY: [已设置]"
37
- echo " REDIS_HOST: ${REDIS_HOST:-localhost}"
38
- echo " PORT: ${PORT:-3000}"
39
 
40
- # 检查是否需要初始化
41
- if [ ! -f "/app/data/init.json" ]; then
42
- echo "📋 首次启动,执行初始化设置..."
43
-
44
- # 如果设置了环境变量,显示提示
45
- if [ -n "$ADMIN_USERNAME" ] || [ -n "$ADMIN_PASSWORD" ]; then
46
- echo "📌 检测到预设的管理员凭据"
47
  fi
48
-
49
- # 执行初始化脚本
50
- node /app/scripts/setup.js
51
-
52
- echo " 初始化完成"
 
53
  else
54
- echo " 检测到已有配置,跳过初始化"
55
-
56
- # 如果 init.json 存在但环境变量也设置了,显示警告
57
- if [ -n "$ADMIN_USERNAME" ] || [ -n "$ADMIN_PASSWORD" ]; then
58
- echo "⚠️ 警告: 检测到环境变量 ADMIN_USERNAME/ADMIN_PASSWORD,但系统已初始化"
59
- echo " 如需使用新凭据,请删除 data/init.json 文件后重启容器"
60
- fi
61
  fi
62
 
63
- # 启动应用
64
- echo "🌐 启动 Claude Relay Service..."
65
- exec "$@"
 
1
+ #!/usr/bin/env sh
2
+ set -euo pipefail
3
 
4
+ export HOST="${HOST:-0.0.0.0}"
5
+ export PORT="${PORT:-7860}"
6
 
7
+ mkdir -p /data/logs /data/data
8
+ if [ ! -L /app/logs ]; then
9
+ rm -rf /app/logs && ln -s /data/logs /app/logs
 
 
 
10
  fi
11
+ if [ ! -L /app/data ]; then
12
+ rm -rf /app/data && ln -s /data/data /app/data
 
 
 
 
13
  fi
14
 
15
+ export REDIS_HOST="${REDIS_HOST:-127.0.0.1}"
16
+ export REDIS_PORT="${REDIS_PORT:-6379}"
17
+ export REDIS_PASSWORD="${REDIS_PASSWORD:-}"
 
 
 
 
 
 
 
 
18
 
19
+ redis-server --bind 127.0.0.1 --port "${REDIS_PORT}" \
20
+ --save 60 1 --appendonly yes --appendfsync everysec &
 
 
 
 
21
 
22
+ echo "[entrypoint] Waiting for Redis on ${REDIS_HOST}:${REDIS_PORT} ..."
23
+ for i in $(seq 1 60); do
24
+ if redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" ping >/dev/null 2>&1; then
25
+ echo "[entrypoint] Redis is ready."
26
+ break
 
 
27
  fi
28
+ sleep 0.5
29
+ done
30
+
31
+ if [ -n "${HF_TOKEN:-}" ] && [ -n "${DATASET_ID:-}" ]; then
32
+ echo "[entrypoint] 启动 HF Dataset 备份服务(间隔 ${SYNC_INTERVAL:-3600}s,保留 ${MAX_BACKUPS:-10} 份)"
33
+ /bin/sh /app/tools/hf-backup.sh > /app/logs/hf-backup.log 2>&1 &
34
  else
35
+ echo "[entrypoint] 未设置 HF_TOKEN/DATASET_ID,跳过备份服务"
 
 
 
 
 
 
36
  fi
37
 
38
+ echo "[entrypoint] Starting app on 0.0.0.0:${PORT} ..."
39
+ exec "$@"