uni-api-open / entrypoint.sh
BlueSkyXN's picture
Upload 3 files (#1)
439d7c7 verified
#!/bin/sh
set -e
echo "Starting Uni API service..."
# 检查URL环境变量
if [ -z "$API_YAML_URL" ]; then
echo "ERROR: Environment variable 'API_YAML_URL' is missing or empty. Exiting."
exit 1
fi
# 使用Dockerfile中预先创建并设置权限的文件路径
CONFIG_FILE_PATH="/home/api.yaml"
# 打印当前权限信息(调试用)
echo "DEBUG: Current permissions of $CONFIG_FILE_PATH: $(ls -la $CONFIG_FILE_PATH 2>/dev/null || echo 'File not found')"
echo "DEBUG: Current user: $(id)"
# 尝试直接下载到目标路径
echo "INFO: Downloading configuration from URL..."
if ! curl -s -S -f --connect-timeout 10 --max-time 30 -o "$CONFIG_FILE_PATH" "$API_YAML_URL"; then
# 如果直接下载失败,尝试下载到用户目录然后复制
echo "WARN: Direct download failed, trying alternative approach..."
TMP_CONFIG="/home/user/api.yaml.tmp"
if curl -s -S -f --connect-timeout 10 --max-time 30 -o "$TMP_CONFIG" "$API_YAML_URL"; then
echo "INFO: Downloaded to temporary location, trying to copy..."
# 尝试使用cat和重定向写入目标文件
cat "$TMP_CONFIG" > "$CONFIG_FILE_PATH" && rm "$TMP_CONFIG"
if [ $? -ne 0 ]; then
echo "ERROR: Could not write to destination file. Using temporary file."
# 设置环境变量,如果应用支持的话
export UNI_API_CONFIG="$TMP_CONFIG"
CONFIG_FILE_PATH="$TMP_CONFIG"
fi
else
echo "ERROR: All download attempts failed."
exit 1
fi
fi
# 验证配置文件
if [ -s "$CONFIG_FILE_PATH" ]; then
echo "INFO: Configuration file available at $CONFIG_FILE_PATH ($(wc -c < "$CONFIG_FILE_PATH") bytes)."
else
echo "ERROR: Configuration file is empty or does not exist."
exit 1
fi
# 执行主程序
echo "INFO: Starting application..."
cd /home
exec python main.py "$@"