BlueSkyXN commited on
Commit
a677b15
·
verified ·
1 Parent(s): 54caa43

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +11 -10
  2. README.md +9 -10
  3. entrypoint.sh +4 -12
Dockerfile CHANGED
@@ -1,17 +1,18 @@
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。
 
1
  # 使用 uni-api 作者发布的官方镜像作为基础
 
2
  FROM yym68686/uni-api:latest
3
 
4
+ # 设置用户和工作目录来避免权限问题
5
+ RUN useradd -m -u 1000 user
6
+ USER user
7
+ ENV HOME=/home/user \
8
+ PATH=/home/user/.local/bin:$PATH
9
+ WORKDIR $HOME/app
10
+
11
  # 将你的自定义入口点脚本复制到镜像的文件系统中
12
+ COPY --chown=user entrypoint.sh $HOME/app/entrypoint.sh
13
 
14
  # 确保脚本在镜像内部具有执行权限
15
+ RUN chmod +x $HOME/app/entrypoint.sh
 
 
 
 
16
 
17
+ # 将你的自定义脚本设置为容器的入口点
18
+ ENTRYPOINT ["./entrypoint.sh"]
 
README.md CHANGED
@@ -1,11 +1,10 @@
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
- ---
 
1
  ---
2
+ title: Uni API
3
+ emoji: 🌍
4
+ colorFrom: gray
5
+ colorTo: yellow
6
+ sdk: docker
7
+ app_port: 8000 # 确保这与uni-api实际监听的端口匹配
8
+ pinned: false
9
+ license: gpl-3.0
10
+ ---
 
entrypoint.sh CHANGED
@@ -1,6 +1,6 @@
1
  #!/bin/sh
2
  set -e
3
- CONFIG_FILE_PATH="/home/api.yaml" # 确认路径!
4
 
5
  echo "DEBUG: Entrypoint script started." # 添加启动信息
6
 
@@ -10,16 +10,11 @@ if [ -z "$API_YAML_CONTENT" ]; then
10
  exit 1
11
  else
12
  echo "DEBUG: API_YAML_CONTENT secret found. Preparing to write..."
13
- # 可以在写入前打印部分内容(小心不要打印密钥)
14
- # echo "DEBUG: YAML content starts with: $(echo "$API_YAML_CONTENT" | head -c 50)"
15
  printf '%s\n' "$API_YAML_CONTENT" > "$CONFIG_FILE_PATH"
16
  echo "DEBUG: Attempted to write to $CONFIG_FILE_PATH."
17
  # 检查文件是否真的创建了
18
  if [ -f "$CONFIG_FILE_PATH" ]; then
19
  echo "DEBUG: File $CONFIG_FILE_PATH created successfully. Size: $(wc -c < "$CONFIG_FILE_PATH") bytes."
20
- # 可以打印文件前几行看看内容对不对(小心密钥)
21
- # echo "DEBUG: First few lines of $CONFIG_FILE_PATH:"
22
- # head -n 5 "$CONFIG_FILE_PATH"
23
  else
24
  echo "ERROR: File $CONFIG_FILE_PATH was NOT created."
25
  exit 1 # 如果文件没创建成功就退出
@@ -27,9 +22,6 @@ else
27
  fi
28
 
29
  echo "DEBUG: About to execute python main.py..." # 添加执行前信息
30
- # 确保 python 和 main.py 路径正确
31
- # 可以尝试打印当前工作目录 pwd
32
- # pwd
33
- # ls -l . /app /home # 查看文件结构
34
- exec python main.py "$@"
35
- echo "ERROR: If you see this, exec failed!" # exec 成功后这行不会执行
 
1
  #!/bin/sh
2
  set -e
3
+ CONFIG_FILE_PATH="$HOME/app/api.yaml" # 确认路径!
4
 
5
  echo "DEBUG: Entrypoint script started." # 添加启动信息
6
 
 
10
  exit 1
11
  else
12
  echo "DEBUG: API_YAML_CONTENT secret found. Preparing to write..."
 
 
13
  printf '%s\n' "$API_YAML_CONTENT" > "$CONFIG_FILE_PATH"
14
  echo "DEBUG: Attempted to write to $CONFIG_FILE_PATH."
15
  # 检查文件是否真的创建了
16
  if [ -f "$CONFIG_FILE_PATH" ]; then
17
  echo "DEBUG: File $CONFIG_FILE_PATH created successfully. Size: $(wc -c < "$CONFIG_FILE_PATH") bytes."
 
 
 
18
  else
19
  echo "ERROR: File $CONFIG_FILE_PATH was NOT created."
20
  exit 1 # 如果文件没创建成功就退出
 
22
  fi
23
 
24
  echo "DEBUG: About to execute python main.py..." # 添加执行前信息
25
+ # 这里使用相对路径调用主程序
26
+ cd /home
27
+ exec python main.py "$@"