uni / entrypoint.sh
hequ's picture
Create entrypoint.sh
2737286 verified
#!/bin/sh
# entrypoint.sh
# 如果任何命令失败,立即退出
set -e
# --- 配置 ---
TEMPLATE_FILE="/app/api.template.yaml"
OUTPUT_FILE="/app/api.yaml"
# 定义期望的环境变量名称 (主要用于错误消息)
PROVIDER_SECRET_ENV_VAR_NAME="SECRET_PROVIDER_API_KEY"
UNI_API_SECRET_ENV_VAR_NAME="SECRET_UNI_API_KEY"
# --- 检查环境变量 ---
# 直接使用期望的 Secret 名称进行检查
# 如果变量未设置,': "..."?error message' 会导致脚本因错误退出
: "${SECRET_PROVIDER_API_KEY?错误:环境变量 $PROVIDER_SECRET_ENV_VAR_NAME 未设置。请在 Space Secrets 中添加它。}"
: "${SECRET_UNI_API_KEY?错误:环境变量 $UNI_API_SECRET_ENV_VAR_NAME 未设置。请在 Space Secrets 中添加它。}"
# --- 生成 api.yaml ---
echo "正在从模板 $TEMPLATE_FILE 生成 $OUTPUT_FILE ..."
# 直接在 sed 中使用期望的 Secret 名称进行替换
# Shell 会自动替换 ${SECRET_...} 为环境变量的值
sed \
-e "s|__PROVIDER_API_KEY_PLACEHOLDER__|${SECRET_PROVIDER_API_KEY}|g" \
-e "s|__UNI_API_KEY_PLACEHOLDER__|${SECRET_UNI_API_KEY}|g" \
"${TEMPLATE_FILE}" > "${OUTPUT_FILE}"
# (可选但推荐)设置文件权限
chmod 600 "${OUTPUT_FILE}"
echo "$OUTPUT_FILE 已成功生成。"
# --- 执行原始命令 ---
echo "正在启动应用程序: $@"
exec "$@"