Spaces:
Sleeping
Sleeping
Upload 3 files
#1
by
BlueSkyXN
- opened
- Dockerfile +32 -0
- README.md +10 -11
- 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:
|
| 5 |
-
colorTo:
|
| 6 |
-
sdk: docker
|
| 7 |
-
|
| 8 |
-
|
| 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 "$@"
|