#!/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 "$@"