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 "$@"
|