Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Upload 3 files (#1)
Browse files- Upload 3 files (f38fa90bd1efb385818017a64f743c098f4b2609)
- Dockerfile +17 -0
- Readme.md +11 -0
- entrypoint.sh +33 -0
    	
        Dockerfile
    ADDED
    
    | @@ -0,0 +1,17 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            # 使用 uni-api 作者发布的官方镜像作为基础
         | 
| 2 | 
            +
            # 这会从 Docker Hub 拉取最新的官方镜像
         | 
| 3 | 
            +
            FROM yym68686/uni-api:latest
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            # 将你的自定义入口点脚本复制到镜像的文件系统中
         | 
| 6 | 
            +
            COPY entrypoint.sh /entrypoint.sh
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # 确保脚本在镜像内部具有执行权限
         | 
| 9 | 
            +
            RUN chmod +x /entrypoint.sh
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # 将你的自定义脚本设置为容器的入口点(ENTRYPOINT)。
         | 
| 12 | 
            +
            # 这会覆盖镜像的默认启动行为,在容器启动时首先运行你的脚本。
         | 
| 13 | 
            +
            ENTRYPOINT ["/entrypoint.sh"]
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            # 基础镜像原本的 CMD ["python", "main.py"] 现在由我们
         | 
| 16 | 
            +
            # entrypoint.sh 脚本中的 'exec python main.py "$@"' 行来调用。
         | 
| 17 | 
            +
            # 所以这里通常不需要再指定 CMD。
         | 
    	
        Readme.md
    ADDED
    
    | @@ -0,0 +1,11 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            title: Uni API # Space 的标题,可以自定义
         | 
| 3 | 
            +
            emoji: 🌍 # Space 的图标,可以自定义
         | 
| 4 | 
            +
            colorFrom: gray # 卡片颜色渐变起始,可选
         | 
| 5 | 
            +
            colorTo: yellow # 卡片颜色渐变结束,可选
         | 
| 6 | 
            +
            sdk: docker # 指定使用 Docker SDK,这个是必须的
         | 
| 7 | 
            +
            app_port: 8000 # !!! 重要:告诉 Spaces 你的应用程序在容器内部监听哪个端口。
         | 
| 8 | 
            +
                           # uni-api 通常默认监听 8000 端口,如果你的应用或 Dockerfile 中指定了其他端口,请修改这里。
         | 
| 9 | 
            +
            pinned: false # 是否在你的个人资料页置顶,可选
         | 
| 10 | 
            +
            license: gpl-3.0 # 可选:指定项目的许可证。
         | 
| 11 | 
            +
            ---
         | 
    	
        entrypoint.sh
    ADDED
    
    | @@ -0,0 +1,33 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            #!/bin/sh
         | 
| 2 | 
            +
            # 如果任何命令执行失败,立即退出脚本
         | 
| 3 | 
            +
            set -e
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            # --- !!! 重要配置 !!! ---
         | 
| 6 | 
            +
            # 定义应用程序期望的 api.yaml 文件路径
         | 
| 7 | 
            +
            # 你必须确认 uni-api 程序实际读取的是哪个路径。
         | 
| 8 | 
            +
            # 根据官方 README 的 'docker run' 示例,可能是 /home/api.yaml。
         | 
| 9 | 
            +
            # 如果应用的工作目录是 /app,也可能是 /app/api.yaml。
         | 
| 10 | 
            +
            # 请根据实际情况修改下面这个变量的值!
         | 
| 11 | 
            +
            CONFIG_FILE_PATH="/home/api.yaml"
         | 
| 12 | 
            +
            # --- !!! 重要配置结束 !!! ---
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            echo "信息:入口点脚本已启动。"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # 检查名为 API_YAML_CONTENT 的环境变量(来自 Secret)是否存在且非空
         | 
| 17 | 
            +
            if [ -z "$API_YAML_CONTENT" ]; then
         | 
| 18 | 
            +
              echo "错误:Secret 'API_YAML_CONTENT' 未设置或为空。无法创建 $CONFIG_FILE_PATH。"
         | 
| 19 | 
            +
              # 遇到错误,以非零状态码退出容器
         | 
| 20 | 
            +
              exit 1
         | 
| 21 | 
            +
            else
         | 
| 22 | 
            +
              echo "信息:找到 API_YAML_CONTENT Secret。正在写入到 $CONFIG_FILE_PATH..."
         | 
| 23 | 
            +
              # 使用 printf 更安全地写入可能包含特殊字符和多行的内容
         | 
| 24 | 
            +
              printf '%s\n' "$API_YAML_CONTENT" > "$CONFIG_FILE_PATH"
         | 
| 25 | 
            +
              echo "信息:已成功写入 $CONFIG_FILE_PATH。"
         | 
| 26 | 
            +
              # 如果需要调试,可以取消下面这行的注释来查看文件权限和大小
         | 
| 27 | 
            +
              # ls -l "$CONFIG_FILE_PATH"
         | 
| 28 | 
            +
            fi
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            echo "信息:将执行权交给原始应用程序命令 (python main.py)..."
         | 
| 31 | 
            +
            # 使用 exec 替换当前 shell 进程,启动 Python 应用。
         | 
| 32 | 
            +
            # "$@" 会将任何传递给 entrypoint.sh 的参数原样传递给 python main.py
         | 
| 33 | 
            +
            exec python main.py "$@"
         | 
