Spaces:
Build error
Build error
OpenCode Deployer commited on
Commit ·
6cec5c8
1
Parent(s): 8ff1b76
update
Browse files- .gitignore +4 -0
- .sisyphus/plans/docker-setup.md +170 -0
- .sisyphus/plans/docker-with-airs-protocol.md +122 -0
- .sisyphus/plans/docker-with-code-download.md +119 -0
- .sisyphus/plans/hfspaces-auto-deploy.md +138 -0
- Dockerfile +138 -0
- push.sh +3 -0
.gitignore
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.env.hf
|
| 2 |
+
.env.tgq
|
| 3 |
+
__pycache__/
|
| 4 |
+
.DS_Store
|
.sisyphus/plans/docker-setup.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HuggingFace Spaces Docker 配置计划
|
| 2 |
+
|
| 3 |
+
## 项目需求分析
|
| 4 |
+
|
| 5 |
+
### 技术栈需求
|
| 6 |
+
- **混合应用**: 同时需要 Node.js 22.04 和 Python 3.12.11
|
| 7 |
+
- **部署平台**: HuggingFace Spaces (Docker SDK)
|
| 8 |
+
- **端口配置**: 7860 (HuggingFace 默认端口)
|
| 9 |
+
- **依赖管理**: 自动检测 package.json 和 requirements.txt
|
| 10 |
+
- **版本控制**: 需要包含 git 工具
|
| 11 |
+
|
| 12 |
+
### 用户确认的需求
|
| 13 |
+
- 主要用途: 混合应用 (Node.js + Python)
|
| 14 |
+
- 监听端口: 7860 (HuggingFace 标准)
|
| 15 |
+
- 依赖处理: 自动检测并安装
|
| 16 |
+
|
| 17 |
+
## 工作目标
|
| 18 |
+
|
| 19 |
+
### 核心目标
|
| 20 |
+
创建一个优化的 Dockerfile,为 HuggingFace Spaces 部署提供完整的运行环境
|
| 21 |
+
|
| 22 |
+
### 具体交付物
|
| 23 |
+
- `Dockerfile`: 完整的容器配置文件
|
| 24 |
+
- 优化的多阶段构建,确保镜像大小合理
|
| 25 |
+
- 自动依赖检测和安装机制
|
| 26 |
+
- 版本验证和健康检查
|
| 27 |
+
|
| 28 |
+
### 定义完成
|
| 29 |
+
- [ ] Dockerfile 可以成功构建
|
| 30 |
+
- [ ] 包含所有必需的运行时环境
|
| 31 |
+
- [ ] 通过 HuggingFace Spaces 部署验证
|
| 32 |
+
|
| 33 |
+
## 技术约束
|
| 34 |
+
|
| 35 |
+
### 必须包含
|
| 36 |
+
- Node.js 22.04 LTS
|
| 37 |
+
- Python 3.12.11 (精确版本)
|
| 38 |
+
- git 工具
|
| 39 |
+
- Ubuntu 22.04 基础镜像
|
| 40 |
+
- 端口 7860 暴露
|
| 41 |
+
|
| 42 |
+
### 必须避免
|
| 43 |
+
- 交互式安装提示
|
| 44 |
+
- 不必要的包安装(控制镜像大小)
|
| 45 |
+
- 版本冲突
|
| 46 |
+
- HuggingFace Spaces 不支持的配置
|
| 47 |
+
|
| 48 |
+
## 验证策略
|
| 49 |
+
|
| 50 |
+
### 构建验证
|
| 51 |
+
- `docker build -t hfproxydemo .` → 成功构建
|
| 52 |
+
- `docker run --rm hfproxydemo node --version` → 显示 Node.js 22.x
|
| 53 |
+
- `docker run --rm hfproxydemo python3 --version` → 显示 Python 3.12.11
|
| 54 |
+
- `docker run --rm hfproxydemo git --version` → 显示 git 版本
|
| 55 |
+
|
| 56 |
+
### 运行时验证
|
| 57 |
+
- 容器可以正常启动
|
| 58 |
+
- 端口 7860 正确暴露
|
| 59 |
+
- Node.js 和 Python 环境都可以正常使用
|
| 60 |
+
- 依赖自动安装成功
|
| 61 |
+
|
| 62 |
+
## 任务流程
|
| 63 |
+
|
| 64 |
+
```
|
| 65 |
+
1. 基础环境配置 → 2. Node.js 安装 → 3. Python 安装 → 4. 工具安装 → 5. 依赖处理 → 6. 验证测试
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
## 并行化方案
|
| 69 |
+
|
| 70 |
+
| 组 | 任务 | 原因 |
|
| 71 |
+
|---|---|---|
|
| 72 |
+
| A | 2, 3 | Node.js 和 Python 安装独立 |
|
| 73 |
+
|
| 74 |
+
## TODOs
|
| 75 |
+
|
| 76 |
+
- [ ] 1. 创建完整优化的 Dockerfile
|
| 77 |
+
|
| 78 |
+
**具体操作**:
|
| 79 |
+
- 创建单个 Dockerfile 文件包含所有配置
|
| 80 |
+
- 基于 Ubuntu 22.04,包含 Node.js 22.04 + Python 3.12.11 + git
|
| 81 |
+
- 自动依赖检测机制(package.json + requirements.txt)
|
| 82 |
+
- HuggingFace Spaces 优化(端口 7860)
|
| 83 |
+
|
| 84 |
+
**Dockerfile 结构**:
|
| 85 |
+
```dockerfile
|
| 86 |
+
FROM ubuntu:22.04
|
| 87 |
+
|
| 88 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 89 |
+
ENV TZ=Asia/Shanghai
|
| 90 |
+
WORKDIR /app
|
| 91 |
+
|
| 92 |
+
# 基础工具 + 开发环境
|
| 93 |
+
RUN apt-get update && apt-get install -y \
|
| 94 |
+
curl wget git ca-certificates gnupg lsb-release \
|
| 95 |
+
software-properties-common build-essential \
|
| 96 |
+
python3-dev python3-pip python3-venv \
|
| 97 |
+
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
| 98 |
+
|
| 99 |
+
# Node.js 22.04
|
| 100 |
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
| 101 |
+
&& apt-get install -y nodejs
|
| 102 |
+
|
| 103 |
+
# Python 3.12.11
|
| 104 |
+
RUN add-apt-repository ppa:deadsnakes/ppa \
|
| 105 |
+
&& apt-get update \
|
| 106 |
+
&& apt-get install -y python3.12 python3.12-dev python3.12-venv python3.12-distutils \
|
| 107 |
+
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
| 108 |
+
&& update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 \
|
| 109 |
+
&& curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12 \
|
| 110 |
+
&& python3 -m pip install --upgrade pip setuptools wheel
|
| 111 |
+
|
| 112 |
+
COPY . .
|
| 113 |
+
|
| 114 |
+
# 自动依赖安装
|
| 115 |
+
RUN if [ -f "package.json" ]; then npm install; fi \
|
| 116 |
+
&& if [ -f "requirements.txt" ]; then python3 -m pip install -r requirements.txt; fi
|
| 117 |
+
|
| 118 |
+
EXPOSE 7860
|
| 119 |
+
CMD ["npm", "start"]
|
| 120 |
+
```
|
| 121 |
+
|
| 122 |
+
**禁止操作**:
|
| 123 |
+
- 不要创建多个文件,只需要一个 Dockerfile
|
| 124 |
+
- 不要使用复杂的多阶段构建
|
| 125 |
+
- 不要添加不必要的注释
|
| 126 |
+
|
| 127 |
+
**可并行**: 是(单文件创建)
|
| 128 |
+
|
| 129 |
+
**参考资料**:
|
| 130 |
+
- HuggingFace Spaces Docker 指南: https://huggingface.co/docs/hub/spaces-sdks-docker
|
| 131 |
+
- NodeSource 官方安装脚本
|
| 132 |
+
- deadsnakes PPA Python 安装
|
| 133 |
+
|
| 134 |
+
**验证标准**:
|
| 135 |
+
- [ ] Dockerfile 创建成功
|
| 136 |
+
- [ ] `docker build -t hfproxydemo .` 构建成功
|
| 137 |
+
- [ ] `node --version` 显示 v22.x.x
|
| 138 |
+
- [ ] `python3 --version` 显示 Python 3.12.11
|
| 139 |
+
- [ ] `git --version` 显示版本信息
|
| 140 |
+
- [ ] 端口 7860 正确暴露
|
| 141 |
+
|
| 142 |
+
## 提交策略
|
| 143 |
+
|
| 144 |
+
| 任务后 | 提交信息 | 文件 | 验证 |
|
| 145 |
+
|--------|----------|------|------|
|
| 146 |
+
| 1 | `feat(docker): add complete Dockerfile for HuggingFace Spaces` | Dockerfile | docker build 验证 |
|
| 147 |
+
|
| 148 |
+
## 成功标准
|
| 149 |
+
|
| 150 |
+
### 验证命令
|
| 151 |
+
```bash
|
| 152 |
+
# 构建验证
|
| 153 |
+
docker build -t hfproxydemo .
|
| 154 |
+
|
| 155 |
+
# 版本验证
|
| 156 |
+
docker run --rm hfproxydemo node --version # v22.x.x
|
| 157 |
+
docker run --rm hfproxydemo python3 --version # Python 3.12.11
|
| 158 |
+
docker run --rm hfproxydemo git --version # git version
|
| 159 |
+
|
| 160 |
+
# 运行验证
|
| 161 |
+
docker run -p 7860:7860 hfproxydemo
|
| 162 |
+
```
|
| 163 |
+
|
| 164 |
+
### 最终检查清单
|
| 165 |
+
- [ ] Dockerfile 创建成功
|
| 166 |
+
- [ ] 所有必需版本正确安装
|
| 167 |
+
- [ ] 容器可以正常启动
|
| 168 |
+
- [ ] 依赖自动安装机制工作正常
|
| 169 |
+
- [ ] 符合 HuggingFace Spaces 要求
|
| 170 |
+
- [ ] 单文件解决方案(只需要 Dockerfile)
|
.sisyphus/plans/docker-with-airs-protocol.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HuggingFace Spaces Docker 配置 - 包含特定代码下载
|
| 2 |
+
FROM ubuntu:22.04
|
| 3 |
+
|
| 4 |
+
# 避免交互式提示
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 6 |
+
ENV TZ=Asia/Shanghai
|
| 7 |
+
|
| 8 |
+
# 设置工作目录
|
| 9 |
+
WORKDIR /app
|
| 10 |
+
|
| 11 |
+
# 更新包管理器并安装基础依赖
|
| 12 |
+
RUN apt-get update && apt-get install -y \
|
| 13 |
+
curl \
|
| 14 |
+
wget \
|
| 15 |
+
git \
|
| 16 |
+
ca-certificates \
|
| 17 |
+
gnupg \
|
| 18 |
+
lsb-release \
|
| 19 |
+
software-properties-common \
|
| 20 |
+
build-essential \
|
| 21 |
+
python3-dev \
|
| 22 |
+
python3-pip \
|
| 23 |
+
python3-venv \
|
| 24 |
+
&& apt-get clean \
|
| 25 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 26 |
+
|
| 27 |
+
# 安装 Node.js 22.04
|
| 28 |
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
| 29 |
+
&& apt-get install -y nodejs
|
| 30 |
+
|
| 31 |
+
# 安装 Python 3.12.11
|
| 32 |
+
RUN add-apt-repository ppa:deadsnakes/ppa \
|
| 33 |
+
&& apt-get update \
|
| 34 |
+
&& apt-get install -y python3.12 python3.12-dev python3.12-venv python3.12-distutils \
|
| 35 |
+
&& apt-get clean \
|
| 36 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 37 |
+
|
| 38 |
+
# 设置 Python 3.12 为默认
|
| 39 |
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
|
| 40 |
+
|
| 41 |
+
# 安装最新 pip
|
| 42 |
+
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12
|
| 43 |
+
|
| 44 |
+
# 升级 pip
|
| 45 |
+
RUN python3 -m pip install --upgrade pip setuptools wheel
|
| 46 |
+
|
| 47 |
+
# 创建启动脚本
|
| 48 |
+
RUN echo '#!/bin/bash\n\
|
| 49 |
+
set -e\n\
|
| 50 |
+
\n\
|
| 51 |
+
echo "下载 airs_protocol 代码..."\n\
|
| 52 |
+
\n\
|
| 53 |
+
# 克隆指定的 airs_protocol 仓库到主目录\n\
|
| 54 |
+
if [ -d "airs_protocol" ]; then\n\
|
| 55 |
+
echo "清理旧代码..."\n\
|
| 56 |
+
rm -rf "airs_protocol"\n\
|
| 57 |
+
fi\n\
|
| 58 |
+
\n\
|
| 59 |
+
git clone -b master https://gitee.com/tanbushi/airs-protocol.git airs_protocol\n\
|
| 60 |
+
\n\
|
| 61 |
+
# 移动到正确的路径(只取 airs_protocol 子目录)\n\
|
| 62 |
+
if [ -d "airs_protocol/airs_protocol" ]; then\n\
|
| 63 |
+
mv airs_protocol/airs_protocol/* ./airs_protocol/ 2>/dev/null || true\n\
|
| 64 |
+
mv airs_protocol/airs_protocol/.[^.]* ./airs_protocol/ 2>/dev/null || true\n\
|
| 65 |
+
rm -rf airs_protocol/airs_protocol\n\
|
| 66 |
+
fi\n\
|
| 67 |
+
\n\
|
| 68 |
+
echo "airs_protocol 代码下载完成"\n\
|
| 69 |
+
\n\
|
| 70 |
+
# 安装当前项目依赖\n\
|
| 71 |
+
if [ -f "package.json" ]; then\n\
|
| 72 |
+
echo "安装 Node.js 依赖..."\n\
|
| 73 |
+
npm install\n\
|
| 74 |
+
fi\n\
|
| 75 |
+
\n\
|
| 76 |
+
if [ -f "requirements.txt" ]; then\n\
|
| 77 |
+
echo "安装 Python 依赖..."\n\
|
| 78 |
+
python3 -m pip install -r requirements.txt\n\
|
| 79 |
+
fi\n\
|
| 80 |
+
\n\
|
| 81 |
+
# 安装 airs_protocol 依赖(如果有)\n\
|
| 82 |
+
if [ -f "airs_protocol/requirements.txt" ]; then\n\
|
| 83 |
+
echo "安装 airs_protocol Python 依赖..."\n\
|
| 84 |
+
python3 -m pip install -r airs_protocol/requirements.txt\n\
|
| 85 |
+
fi\n\
|
| 86 |
+
\n\
|
| 87 |
+
if [ -f "airs_protocol/package.json" ]; then\n\
|
| 88 |
+
echo "安装 airs_protocol Node.js 依赖..."\n\
|
| 89 |
+
cd airs_protocol && npm install && cd ..\n\
|
| 90 |
+
fi\n\
|
| 91 |
+
\n\
|
| 92 |
+
echo "环境准备完成,启动应用..."\n\
|
| 93 |
+
\n\
|
| 94 |
+
# 执行启动命令\n\
|
| 95 |
+
if [ $# -gt 0 ]; then\n\
|
| 96 |
+
exec "$@"\n\
|
| 97 |
+
else\n\
|
| 98 |
+
# 默认启动命令\n\
|
| 99 |
+
if [ -f "package.json" ] && command -v npm &> /dev/null; then\n\
|
| 100 |
+
exec npm start\n\
|
| 101 |
+
elif [ -f "app.py" ]; then\n\
|
| 102 |
+
exec python3 app.py\n\
|
| 103 |
+
elif [ -f "main.py" ]; then\n\
|
| 104 |
+
exec python3 main.py\n\
|
| 105 |
+
else\n\
|
| 106 |
+
echo "未找到启动文件,启动交互模式"\n\
|
| 107 |
+
sleep infinity\n\
|
| 108 |
+
fi\n\
|
| 109 |
+
fi' > /app/entrypoint.sh \
|
| 110 |
+
&& chmod +x /app/entrypoint.sh
|
| 111 |
+
|
| 112 |
+
# 复制项目文件(当前项目的配置文件)
|
| 113 |
+
COPY . .
|
| 114 |
+
|
| 115 |
+
# 暴露 HuggingFace Spaces 默认端口
|
| 116 |
+
EXPOSE 7860
|
| 117 |
+
|
| 118 |
+
# 使用启动脚本作为 entrypoint
|
| 119 |
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
| 120 |
+
|
| 121 |
+
# 默认命令
|
| 122 |
+
CMD []
|
.sisyphus/plans/docker-with-code-download.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HuggingFace Spaces Docker 配置 - 包含代码下载
|
| 2 |
+
FROM ubuntu:22.04
|
| 3 |
+
|
| 4 |
+
# 避免交互式提示
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 6 |
+
ENV TZ=Asia/Shanghai
|
| 7 |
+
|
| 8 |
+
# 设置工作目录
|
| 9 |
+
WORKDIR /app
|
| 10 |
+
|
| 11 |
+
# 更新包管理器并安装基础依赖
|
| 12 |
+
RUN apt-get update && apt-get install -y \
|
| 13 |
+
curl \
|
| 14 |
+
wget \
|
| 15 |
+
git \
|
| 16 |
+
ca-certificates \
|
| 17 |
+
gnupg \
|
| 18 |
+
lsb-release \
|
| 19 |
+
software-properties-common \
|
| 20 |
+
build-essential \
|
| 21 |
+
python3-dev \
|
| 22 |
+
python3-pip \
|
| 23 |
+
python3-venv \
|
| 24 |
+
&& apt-get clean \
|
| 25 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 26 |
+
|
| 27 |
+
# 安装 Node.js 22.04
|
| 28 |
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
| 29 |
+
&& apt-get install -y nodejs
|
| 30 |
+
|
| 31 |
+
# 安装 Python 3.12.11
|
| 32 |
+
RUN add-apt-repository ppa:deadsnakes/ppa \
|
| 33 |
+
&& apt-get update \
|
| 34 |
+
&& apt-get install -y python3.12 python3.12-dev python3.12-venv python3.12-distutils \
|
| 35 |
+
&& apt-get clean \
|
| 36 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 37 |
+
|
| 38 |
+
# 设置 Python 3.12 为默认
|
| 39 |
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
|
| 40 |
+
|
| 41 |
+
# 安装最新 pip
|
| 42 |
+
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12
|
| 43 |
+
|
| 44 |
+
# 升级 pip
|
| 45 |
+
RUN python3 -m pip install --upgrade pip setuptools wheel
|
| 46 |
+
|
| 47 |
+
# 创建启动脚本
|
| 48 |
+
RUN echo '#!/bin/bash\n\
|
| 49 |
+
set -e\n\
|
| 50 |
+
\n\
|
| 51 |
+
# 代码仓库配置\n\
|
| 52 |
+
REPO_URL="${CODE_REPO_URL:-https://github.com/your-repo/your-project.git}"\n\
|
| 53 |
+
REPO_BRANCH="${CODE_REPO_BRANCH:-main}"\n\
|
| 54 |
+
CODE_DIR="${CODE_DIR:-external-code}"\n\
|
| 55 |
+
\n\
|
| 56 |
+
echo "准备下载代码: $REPO_URL (分支: $REPO_BRANCH)"\n\
|
| 57 |
+
\n\
|
| 58 |
+
# 清理旧代码(如果存在)\n\
|
| 59 |
+
if [ -d "$CODE_DIR" ]; then\n\
|
| 60 |
+
echo "清理旧代码..."\n\
|
| 61 |
+
rm -rf "$CODE_DIR"\n\
|
| 62 |
+
fi\n\
|
| 63 |
+
\n\
|
| 64 |
+
# 克隆代码\n\
|
| 65 |
+
echo "克隆代码到 $CODE_DIR..."\n\
|
| 66 |
+
git clone -b "$REPO_BRANCH" "$REPO_URL" "$CODE_DIR"\n\
|
| 67 |
+
\n\
|
| 68 |
+
# 如果有 package.json,安装依赖\n\
|
| 69 |
+
if [ -f "package.json" ]; then\n\
|
| 70 |
+
echo "安装 Node.js 依赖..."\n\
|
| 71 |
+
npm install\n\
|
| 72 |
+
fi\n\
|
| 73 |
+
\n\
|
| 74 |
+
# 如果有 requirements.txt,安装依赖\n\
|
| 75 |
+
if [ -f "requirements.txt" ]; then\n\
|
| 76 |
+
echo "安装 Python 依赖..."\n\
|
| 77 |
+
python3 -m pip install -r requirements.txt\n\
|
| 78 |
+
fi\n\
|
| 79 |
+
\n\
|
| 80 |
+
# 如果外部代码有依赖也安装\n\
|
| 81 |
+
if [ -f "$CODE_DIR/package.json" ]; then\n\
|
| 82 |
+
echo "安装外部代码 Node.js 依赖..."\n\
|
| 83 |
+
cd "$CODE_DIR" && npm install && cd ..\n\
|
| 84 |
+
fi\n\
|
| 85 |
+
\n\
|
| 86 |
+
if [ -f "$CODE_DIR/requirements.txt" ]; then\n\
|
| 87 |
+
echo "安装外部代码 Python 依赖..."\n\
|
| 88 |
+
python3 -m pip install -r "$CODE_DIR/requirements.txt"\n\
|
| 89 |
+
fi\n\
|
| 90 |
+
\n\
|
| 91 |
+
echo "环境准备完成,启动应用..."\n\
|
| 92 |
+
\n\
|
| 93 |
+
# 执行传入的命令,如果没有则默认启动\n\
|
| 94 |
+
if [ $# -gt 0 ]; then\n\
|
| 95 |
+
exec "$@"\n\
|
| 96 |
+
else\n\
|
| 97 |
+
# 默认启动命令\n\
|
| 98 |
+
if [ -f "package.json" ] && command -v npm &> /dev/null; then\n\
|
| 99 |
+
exec npm start\n\
|
| 100 |
+
elif [ -f "app.py" ]; then\n\
|
| 101 |
+
exec python3 app.py\n\
|
| 102 |
+
else\n\
|
| 103 |
+
echo "未找到启动文件,请检查项目配置"\n\
|
| 104 |
+
sleep infinity\n\
|
| 105 |
+
fi\n\
|
| 106 |
+
fi' > /app/entrypoint.sh \
|
| 107 |
+
&& chmod +x /app/entrypoint.sh
|
| 108 |
+
|
| 109 |
+
# 复制项目文件(当前项目的配置文件)
|
| 110 |
+
COPY . .
|
| 111 |
+
|
| 112 |
+
# 暴露 HuggingFace Spaces 默认端口
|
| 113 |
+
EXPOSE 7860
|
| 114 |
+
|
| 115 |
+
# 使用启动脚本作为 entrypoint
|
| 116 |
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
| 117 |
+
|
| 118 |
+
# 默认命令
|
| 119 |
+
CMD []
|
.sisyphus/plans/hfspaces-auto-deploy.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HuggingFace Spaces 自动部署 - 包含 airs_protocol 下载
|
| 2 |
+
FROM ubuntu:22.04
|
| 3 |
+
|
| 4 |
+
# 避免交互式提示
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 6 |
+
ENV TZ=Asia/Shanghai
|
| 7 |
+
|
| 8 |
+
# 设置工作目录
|
| 9 |
+
WORKDIR /app
|
| 10 |
+
|
| 11 |
+
# 更新包管理器并安装基础依赖
|
| 12 |
+
RUN apt-get update && apt-get install -y \
|
| 13 |
+
curl \
|
| 14 |
+
wget \
|
| 15 |
+
git \
|
| 16 |
+
ca-certificates \
|
| 17 |
+
gnupg \
|
| 18 |
+
lsb-release \
|
| 19 |
+
software-properties-common \
|
| 20 |
+
build-essential \
|
| 21 |
+
python3-dev \
|
| 22 |
+
python3-pip \
|
| 23 |
+
python3-venv \
|
| 24 |
+
&& apt-get clean \
|
| 25 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 26 |
+
|
| 27 |
+
# 安装 Node.js 22.04
|
| 28 |
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
| 29 |
+
&& apt-get install -y nodejs
|
| 30 |
+
|
| 31 |
+
# 安装 Python 3.12.11
|
| 32 |
+
RUN add-apt-repository ppa:deadsnakes/ppa \
|
| 33 |
+
&& apt-get update \
|
| 34 |
+
&& apt-get install -y python3.12 python3.12-dev python3.12-venv python3.12-distutils \
|
| 35 |
+
&& apt-get clean \
|
| 36 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 37 |
+
|
| 38 |
+
# 设置 Python 3.12 为默认
|
| 39 |
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
|
| 40 |
+
|
| 41 |
+
# 安装最新 pip
|
| 42 |
+
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12
|
| 43 |
+
|
| 44 |
+
# 升级 pip
|
| 45 |
+
RUN python3 -m pip install --upgrade pip setuptools wheel
|
| 46 |
+
|
| 47 |
+
# 创建启动脚本
|
| 48 |
+
RUN echo '#!/bin/bash\n\
|
| 49 |
+
set -e\n\
|
| 50 |
+
\n\
|
| 51 |
+
echo "正在下载 airs_protocol 代码..."\n\
|
| 52 |
+
\n\
|
| 53 |
+
# 克隆 airs_protocol 仓库到主目录\n\
|
| 54 |
+
if [ -d "airs_protocol" ]; then\n\
|
| 55 |
+
echo "清理旧代码..."\n\
|
| 56 |
+
rm -rf "airs_protocol"\n\
|
| 57 |
+
fi\n\
|
| 58 |
+
\n\
|
| 59 |
+
git clone -b master https://gitee.com/tanbushi/airs-protocol.git temp_airs\n\
|
| 60 |
+
\n\
|
| 61 |
+
# 只复制 airs_protocol 子目录的内容到主目录\n\
|
| 62 |
+
if [ -d "temp_airs/airs_protocol" ]; then\n\
|
| 63 |
+
mkdir -p airs_protocol\n\
|
| 64 |
+
cp -r temp_airs/airs_protocol/* airs_protocol/\n\
|
| 65 |
+
cp -r temp_airs/airs_protocol/.[^.]* airs_protocol/ 2>/dev/null || true\n\
|
| 66 |
+
fi\n\
|
| 67 |
+
\n\
|
| 68 |
+
# 清理临时文件\n\
|
| 69 |
+
rm -rf temp_airs\n\
|
| 70 |
+
\n\
|
| 71 |
+
echo "airs_protocol 代码下载完成"\n\
|
| 72 |
+
ls -la airs_protocol/\n\
|
| 73 |
+
\n\
|
| 74 |
+
# 安装当前项目依赖\n\
|
| 75 |
+
if [ -f "package.json" ]; then\n\
|
| 76 |
+
echo "安装 Node.js 依赖..."\n\
|
| 77 |
+
npm install\n\
|
| 78 |
+
fi\n\
|
| 79 |
+
\n\
|
| 80 |
+
if [ -f "requirements.txt" ]; then\n\
|
| 81 |
+
echo "安装 Python 依赖..."\n\
|
| 82 |
+
python3 -m pip install -r requirements.txt\n\
|
| 83 |
+
fi\n\
|
| 84 |
+
\n\
|
| 85 |
+
# 安装 airs_protocol 依赖\n\
|
| 86 |
+
if [ -f "airs_protocol/requirements.txt" ]; then\n\
|
| 87 |
+
echo "安装 airs_protocol Python 依赖..."\n\
|
| 88 |
+
python3 -m pip install -r airs_protocol/requirements.txt\n\
|
| 89 |
+
fi\n\
|
| 90 |
+
\n\
|
| 91 |
+
if [ -f "airs_protocol/package.json" ]; then\n\
|
| 92 |
+
echo "安装 airs_protocol Node.js 依赖..."\n\
|
| 93 |
+
cd airs_protocol && npm install && cd ..\n\
|
| 94 |
+
fi\n\
|
| 95 |
+
\n\
|
| 96 |
+
echo "环境准备完成,启动应用..."\n\
|
| 97 |
+
\n\
|
| 98 |
+
# HuggingFace Spaces 启动逻辑\n\
|
| 99 |
+
if [ $# -gt 0 ]; then\n\
|
| 100 |
+
exec "$@"\n\
|
| 101 |
+
else\n\
|
| 102 |
+
# 优先级启动顺序\n\
|
| 103 |
+
if [ -f "package.json" ]; then\n\
|
| 104 |
+
if grep -q "start" package.json; then\n\
|
| 105 |
+
echo "使用 npm start 启动..."\n\
|
| 106 |
+
exec npm start\n\
|
| 107 |
+
fi\n\
|
| 108 |
+
fi\n\
|
| 109 |
+
\n\
|
| 110 |
+
if [ -f "app.py" ]; then\n\
|
| 111 |
+
echo "使用 python app.py 启动..."\n\
|
| 112 |
+
exec python3 app.py\n\
|
| 113 |
+
fi\n\
|
| 114 |
+
\n\
|
| 115 |
+
if [ -f "main.py" ]; then\n\
|
| 116 |
+
echo "使用 python main.py 启动..."\n\
|
| 117 |
+
exec python3 main.py\n\
|
| 118 |
+
fi\n\
|
| 119 |
+
\n\
|
| 120 |
+
if [ -f "server.py" ]; then\n\
|
| 121 |
+
echo "使用 python server.py 启动..."\n\
|
| 122 |
+
exec python3 server.py\n\
|
| 123 |
+
fi\n\
|
| 124 |
+
\n\
|
| 125 |
+
# 默认保持运行,避免容器重启\n\
|
| 126 |
+
echo "未找到标准启动文件,保持容器运行..."\n\
|
| 127 |
+
sleep infinity\n\
|
| 128 |
+
fi' > /app/entrypoint.sh \
|
| 129 |
+
&& chmod +x /app/entrypoint.sh
|
| 130 |
+
|
| 131 |
+
# 复制项目文件
|
| 132 |
+
COPY . .
|
| 133 |
+
|
| 134 |
+
# 暴露 HuggingFace Spaces 默认端口
|
| 135 |
+
EXPOSE 7860
|
| 136 |
+
|
| 137 |
+
# HuggingFace Spaces 会使用此 entrypoint
|
| 138 |
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
Dockerfile
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HuggingFace Spaces 自动部署 - 包含 airs_protocol 下载
|
| 2 |
+
FROM ubuntu:22.04
|
| 3 |
+
|
| 4 |
+
# 避免交互式提示
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 6 |
+
ENV TZ=Asia/Shanghai
|
| 7 |
+
|
| 8 |
+
# 设置工作目录
|
| 9 |
+
WORKDIR /app
|
| 10 |
+
|
| 11 |
+
# 更新包管理器并安装基础依赖
|
| 12 |
+
RUN apt-get update && apt-get install -y \
|
| 13 |
+
curl \
|
| 14 |
+
wget \
|
| 15 |
+
git \
|
| 16 |
+
ca-certificates \
|
| 17 |
+
gnupg \
|
| 18 |
+
lsb-release \
|
| 19 |
+
software-properties-common \
|
| 20 |
+
build-essential \
|
| 21 |
+
python3-dev \
|
| 22 |
+
python3-pip \
|
| 23 |
+
python3-venv \
|
| 24 |
+
&& apt-get clean \
|
| 25 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 26 |
+
|
| 27 |
+
# 安装 Node.js 22.04
|
| 28 |
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
| 29 |
+
&& apt-get install -y nodejs
|
| 30 |
+
|
| 31 |
+
# 安装 Python 3.12.11
|
| 32 |
+
RUN add-apt-repository ppa:deadsnakes/ppa \
|
| 33 |
+
&& apt-get update \
|
| 34 |
+
&& apt-get install -y python3.12 python3.12-dev python3.12-venv python3.12-distutils \
|
| 35 |
+
&& apt-get clean \
|
| 36 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 37 |
+
|
| 38 |
+
# 设置 Python 3.12 为默认
|
| 39 |
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
|
| 40 |
+
|
| 41 |
+
# 安装最新 pip
|
| 42 |
+
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12
|
| 43 |
+
|
| 44 |
+
# 升级 pip
|
| 45 |
+
RUN python3 -m pip install --upgrade pip setuptools wheel
|
| 46 |
+
|
| 47 |
+
# 创建启动脚本
|
| 48 |
+
RUN echo '#!/bin/bash\n\
|
| 49 |
+
set -e\n\
|
| 50 |
+
\n\
|
| 51 |
+
echo "正在下载 airs_protocol 代码..."\n\
|
| 52 |
+
\n\
|
| 53 |
+
# 克隆 airs_protocol 仓库到主目录\n\
|
| 54 |
+
if [ -d "airs_protocol" ]; then\n\
|
| 55 |
+
echo "清理旧代码..."\n\
|
| 56 |
+
rm -rf "airs_protocol"\n\
|
| 57 |
+
fi\n\
|
| 58 |
+
\n\
|
| 59 |
+
git clone -b master https://gitee.com/tanbushi/airs-protocol.git temp_airs\n\
|
| 60 |
+
\n\
|
| 61 |
+
# 只复制 airs_protocol 子目录的内容到主目录\n\
|
| 62 |
+
if [ -d "temp_airs/airs_protocol" ]; then\n\
|
| 63 |
+
mkdir -p airs_protocol\n\
|
| 64 |
+
cp -r temp_airs/airs_protocol/* airs_protocol/\n\
|
| 65 |
+
cp -r temp_airs/airs_protocol/.[^.]* airs_protocol/ 2>/dev/null || true\n\
|
| 66 |
+
fi\n\
|
| 67 |
+
\n\
|
| 68 |
+
# 清理临时文件\n\
|
| 69 |
+
rm -rf temp_airs\n\
|
| 70 |
+
\n\
|
| 71 |
+
echo "airs_protocol 代码下载完成"\n\
|
| 72 |
+
ls -la airs_protocol/\n\
|
| 73 |
+
\n\
|
| 74 |
+
# 安装当前项目依赖\n\
|
| 75 |
+
if [ -f "package.json" ]; then\n\
|
| 76 |
+
echo "安装 Node.js 依赖..."\n\
|
| 77 |
+
npm install\n\
|
| 78 |
+
fi\n\
|
| 79 |
+
\n\
|
| 80 |
+
if [ -f "requirements.txt" ]; then\n\
|
| 81 |
+
echo "安装 Python 依赖..."\n\
|
| 82 |
+
python3 -m pip install -r requirements.txt\n\
|
| 83 |
+
fi\n\
|
| 84 |
+
\n\
|
| 85 |
+
# 安装 airs_protocol 依赖\n\
|
| 86 |
+
if [ -f "airs_protocol/requirements.txt" ]; then\n\
|
| 87 |
+
echo "安装 airs_protocol Python 依赖..."\n\
|
| 88 |
+
python3 -m pip install -r airs_protocol/requirements.txt\n\
|
| 89 |
+
fi\n\
|
| 90 |
+
\n\
|
| 91 |
+
if [ -f "airs_protocol/package.json" ]; then\n\
|
| 92 |
+
echo "安装 airs_protocol Node.js 依赖..."\n\
|
| 93 |
+
cd airs_protocol && npm install && cd ..\n\
|
| 94 |
+
fi\n\
|
| 95 |
+
\n\
|
| 96 |
+
echo "环境准备完成,启动应用..."\n\
|
| 97 |
+
\n\
|
| 98 |
+
# HuggingFace Spaces 启动逻辑\n\
|
| 99 |
+
if [ $# -gt 0 ]; then\n\
|
| 100 |
+
exec "$@"\n\
|
| 101 |
+
else\n\
|
| 102 |
+
# 优先级启动顺序\n\
|
| 103 |
+
if [ -f "package.json" ]; then\n\
|
| 104 |
+
if grep -q "start" package.json; then\n\
|
| 105 |
+
echo "使用 npm start 启动..."\n\
|
| 106 |
+
exec npm start\n\
|
| 107 |
+
fi\n\
|
| 108 |
+
fi\n\
|
| 109 |
+
\n\
|
| 110 |
+
if [ -f "app.py" ]; then\n\
|
| 111 |
+
echo "使用 python app.py 启动..."\n\
|
| 112 |
+
exec python3 app.py\n\
|
| 113 |
+
fi\n\
|
| 114 |
+
\n\
|
| 115 |
+
if [ -f "main.py" ]; then\n\
|
| 116 |
+
echo "使用 python main.py 启动..."\n\
|
| 117 |
+
exec python3 main.py\n\
|
| 118 |
+
fi\n\
|
| 119 |
+
\n\
|
| 120 |
+
if [ -f "server.py" ]; then\n\
|
| 121 |
+
echo "使用 python server.py 启动..."\n\
|
| 122 |
+
exec python3 server.py\n\
|
| 123 |
+
fi\n\
|
| 124 |
+
\n\
|
| 125 |
+
# 默认保持运行,避免容器重启\n\
|
| 126 |
+
echo "未找到标准启动文件,保持容器运行..."\n\
|
| 127 |
+
sleep infinity\n\
|
| 128 |
+
fi' > /app/entrypoint.sh \
|
| 129 |
+
&& chmod +x /app/entrypoint.sh
|
| 130 |
+
|
| 131 |
+
# 复制项目文件
|
| 132 |
+
COPY . .
|
| 133 |
+
|
| 134 |
+
# 暴露 HuggingFace Spaces 默认端口
|
| 135 |
+
EXPOSE 7860
|
| 136 |
+
|
| 137 |
+
# HuggingFace Spaces 会使用此 entrypoint
|
| 138 |
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
push.sh
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
git add .
|
| 2 |
+
git commit -m "update"
|
| 3 |
+
git push
|