ZhaoShanGeng commited on
Commit
4a6722f
·
1 Parent(s): 1252cad

fix: 支持环境变量设置为空值

Browse files

- 修改 entrypoint.sh 使用 \ 语法检测变量是否被设置
- 支持 SYSTEM_INSTRUCTION= 这样的空值设置

Files changed (1) hide show
  1. Dockerfile.binary +24 -10
Dockerfile.binary CHANGED
@@ -37,23 +37,37 @@ RUN cat > /app/entrypoint.sh << 'EOF'
37
  # 同步环境变量到 .env 文件
38
  ENV_FILE="/app/.env"
39
 
40
- # 需要同步的环境变量列表
41
- KEYS="API_KEY ADMIN_USERNAME ADMIN_PASSWORD JWT_SECRET PROXY SYSTEM_INSTRUCTION IMAGE_BASE_URL"
42
-
43
- for key in $KEYS; do
44
- value=$(eval echo \$$key)
45
- if [ -n "$value" ]; then
 
46
  # 检查是否已存在该配置
47
  if grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then
48
- # 替换现有配置
49
- sed -i "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
50
  else
51
  # 添加新配置
52
  echo "${key}=${value}" >> "$ENV_FILE"
53
  fi
54
- echo "✓ 已同步环境变量: ${key}"
 
 
 
 
55
  fi
56
- done
 
 
 
 
 
 
 
 
 
57
 
58
  # 启动应用
59
  exec /app/antigravity
 
37
  # 同步环境变量到 .env 文件
38
  ENV_FILE="/app/.env"
39
 
40
+ # 同步单个环境变量的函数
41
+ # 使用 ${var+x} 语法检测变量是否被设置(包括空值)
42
+ sync_env() {
43
+ key=$1
44
+ # 检查环境变量是否被设置(包括空值)
45
+ if eval "[ \"\${${key}+x}\" ]"; then
46
+ value=$(eval echo \"\$$key\")
47
  # 检查是否已存在该配置
48
  if grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then
49
+ # 替换现有配置(使用 # 作为分隔符避免值中的特殊字符问题)
50
+ sed -i "s#^${key}=.*#${key}=${value}#" "$ENV_FILE"
51
  else
52
  # 添加新配置
53
  echo "${key}=${value}" >> "$ENV_FILE"
54
  fi
55
+ if [ -n "$value" ]; then
56
+ echo "✓ 已同步环境变量: ${key}=${value}"
57
+ else
58
+ echo "✓ 已同步环境变量: ${key}=(空值)"
59
+ fi
60
  fi
61
+ }
62
+
63
+ # 同步所有支持的环境变量
64
+ sync_env "API_KEY"
65
+ sync_env "ADMIN_USERNAME"
66
+ sync_env "ADMIN_PASSWORD"
67
+ sync_env "JWT_SECRET"
68
+ sync_env "PROXY"
69
+ sync_env "SYSTEM_INSTRUCTION"
70
+ sync_env "IMAGE_BASE_URL"
71
 
72
  # 启动应用
73
  exec /app/antigravity