Spaces:
Paused
Paused
| # 使用官方Python 3.9 Alpine作为基础镜像(轻量级) | |
| FROM python:3.9-alpine | |
| # 设置工作目录 | |
| WORKDIR /app | |
| # 安装系统依赖 | |
| RUN apk add --no-cache \ | |
| curl \ | |
| ca-certificates \ | |
| tzdata \ | |
| tar \ | |
| gzip \ | |
| # 添加编译PyYAML所需的依赖 | |
| gcc \ | |
| musl-dev \ | |
| python3-dev \ | |
| yaml-dev | |
| # 设置时区为亚洲/上海 | |
| ENV TZ=Asia/Shanghai | |
| # 创建必要的目录 | |
| RUN mkdir -p ./clash_core ./subconverter ./data | |
| # 下载并安装Clash Meta (替代Clash Core,功能更强大) | |
| RUN curl -L -o /tmp/clash-meta.gz "https://github.com/MetaCubeX/Clash.Meta/releases/download/v1.16.0/clash.meta-linux-amd64-v1.16.0.gz" && \ | |
| gunzip -c /tmp/clash-meta.gz > ./clash_core/clash-linux-amd64 && \ | |
| chmod +x ./clash_core/clash-linux-amd64 && \ | |
| rm /tmp/clash-meta.gz | |
| # 下载并安装subconverter | |
| RUN curl -L -o /tmp/subconverter.tar.gz "https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz" && \ | |
| tar -xzf /tmp/subconverter.tar.gz -C /tmp && \ | |
| cp -R /tmp/subconverter/* ./subconverter/ && \ | |
| chmod +x ./subconverter/subconverter && \ | |
| rm -rf /tmp/subconverter* | |
| # 复制Python依赖列表 | |
| COPY requirements.txt ./ | |
| # 安装Python依赖 | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # 清理不再需要的构建依赖,减小镜像大小 | |
| RUN apk del gcc musl-dev python3-dev yaml-dev | |
| # 设置环境变量 | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| FLASK_APP=app.main \ | |
| FLASK_ENV=production | |
| # 复制应用代码 | |
| COPY app/ ./app/ | |
| # 复制启动脚本并赋予执行权限 | |
| COPY entrypoint.sh ./ | |
| RUN chmod +x ./entrypoint.sh | |
| # 暴露单一端口 (Hugging Face Spaces要求) | |
| EXPOSE 7860 | |
| # 使用entrypoint脚本启动应用 | |
| ENTRYPOINT ["/app/entrypoint.sh"] |