OpenCode Deployer commited on
Commit
6cec5c8
·
1 Parent(s): 8ff1b76
.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