BlueSkyXN commited on
Commit
e634047
·
verified ·
1 Parent(s): cf63eca
Files changed (3) hide show
  1. Dockerfile +17 -0
  2. Readme.md +11 -0
  3. 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 "$@"