Files changed (3) hide show
  1. Dockerfile +32 -0
  2. README.md +10 -11
  3. entrypoint.sh +53 -0
Dockerfile ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ DISABLE_DATABASE=true
10
+
11
+ # 安装curl工具(确保下载工具可用)
12
+ USER root
13
+ RUN apt-get update && apt-get install -y curl && apt-get clean
14
+
15
+ # 关键部分:创建配置文件并设置正确的权限
16
+ RUN touch /home/api.yaml && chmod 666 /home/api.yaml
17
+
18
+ # 复制入口点脚本
19
+ COPY --chown=user entrypoint.sh /home/user/entrypoint.sh
20
+ RUN chmod +x /home/user/entrypoint.sh
21
+
22
+ # 确保/home目录有足够的权限
23
+ RUN chmod 777 /home
24
+
25
+ # 设置工作目录
26
+ WORKDIR /home/user
27
+
28
+ # 切回用户身份
29
+ USER user
30
+
31
+ # 入口点
32
+ ENTRYPOINT ["/home/user/entrypoint.sh"]
README.md CHANGED
@@ -1,11 +1,10 @@
1
- ---
2
- title: Uni Api Open
3
- emoji: 😻
4
- colorFrom: red
5
- colorTo: pink
6
- sdk: docker
7
- pinned: false
8
- license: gpl-3.0
9
- ---
10
-
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Uni Api Open
3
+ emoji: 😻
4
+ colorFrom: yellow
5
+ colorTo: gray
6
+ sdk: docker
7
+ app_port: 8000
8
+ pinned: false
9
+ license: gpl-3.0
10
+ ---
 
entrypoint.sh ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ echo "Starting Uni API service..."
5
+
6
+ # 检查URL环境变量
7
+ if [ -z "$API_YAML_URL" ]; then
8
+ echo "ERROR: Environment variable 'API_YAML_URL' is missing or empty. Exiting."
9
+ exit 1
10
+ fi
11
+
12
+ # 使用Dockerfile中预先创建并设置权限的文件路径
13
+ CONFIG_FILE_PATH="/home/api.yaml"
14
+
15
+ # 打印当前权限信息(调试用)
16
+ echo "DEBUG: Current permissions of $CONFIG_FILE_PATH: $(ls -la $CONFIG_FILE_PATH 2>/dev/null || echo 'File not found')"
17
+ echo "DEBUG: Current user: $(id)"
18
+
19
+ # 尝试直接下载到目标路径
20
+ echo "INFO: Downloading configuration from URL..."
21
+ if ! curl -s -S -f --connect-timeout 10 --max-time 30 -o "$CONFIG_FILE_PATH" "$API_YAML_URL"; then
22
+ # 如果直接下载失败,尝试下载到用户目录然后复制
23
+ echo "WARN: Direct download failed, trying alternative approach..."
24
+ TMP_CONFIG="/home/user/api.yaml.tmp"
25
+
26
+ if curl -s -S -f --connect-timeout 10 --max-time 30 -o "$TMP_CONFIG" "$API_YAML_URL"; then
27
+ echo "INFO: Downloaded to temporary location, trying to copy..."
28
+ # 尝试使用cat和重定向写入目标文件
29
+ cat "$TMP_CONFIG" > "$CONFIG_FILE_PATH" && rm "$TMP_CONFIG"
30
+ if [ $? -ne 0 ]; then
31
+ echo "ERROR: Could not write to destination file. Using temporary file."
32
+ # 设置环境变量,如果应用支持的话
33
+ export UNI_API_CONFIG="$TMP_CONFIG"
34
+ CONFIG_FILE_PATH="$TMP_CONFIG"
35
+ fi
36
+ else
37
+ echo "ERROR: All download attempts failed."
38
+ exit 1
39
+ fi
40
+ fi
41
+
42
+ # 验证配置文件
43
+ if [ -s "$CONFIG_FILE_PATH" ]; then
44
+ echo "INFO: Configuration file available at $CONFIG_FILE_PATH ($(wc -c < "$CONFIG_FILE_PATH") bytes)."
45
+ else
46
+ echo "ERROR: Configuration file is empty or does not exist."
47
+ exit 1
48
+ fi
49
+
50
+ # 执行主程序
51
+ echo "INFO: Starting application..."
52
+ cd /home
53
+ exec python main.py "$@"