ZhaoShanGeng
commited on
Commit
·
4a6722f
1
Parent(s):
1252cad
fix: 支持环境变量设置为空值
Browse files- 修改 entrypoint.sh 使用 \ 语法检测变量是否被设置
- 支持 SYSTEM_INSTRUCTION= 这样的空值设置
- 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 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
if [
|
|
|
|
| 46 |
# 检查是否已存在该配置
|
| 47 |
if grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then
|
| 48 |
-
#
|
| 49 |
-
sed -i "s
|
| 50 |
else
|
| 51 |
# 添加新配置
|
| 52 |
echo "${key}=${value}" >> "$ENV_FILE"
|
| 53 |
fi
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
fi
|
| 56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|