Spaces:
Sleeping
Sleeping
| FROM python:3.9-slim | |
| WORKDIR /code | |
| # 安装系统依赖 | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends curl && \ | |
| apt-get clean && \ | |
| rm -rf /var/lib/apt/lists/* | |
| # 复制必要的文件 | |
| COPY ./requirements.txt /code/requirements.txt | |
| # 安装依赖 | |
| RUN pip install --no-cache-dir --upgrade pip && \ | |
| pip install --no-cache-dir --upgrade -r /code/requirements.txt && \ | |
| pip install gunicorn | |
| # 复制应用文件 | |
| COPY ./flask_app.py /code/flask_app.py | |
| COPY ./service.py /code/service.py | |
| COPY ./templates /code/templates/ | |
| COPY ./static /code/static/ | |
| # 创建必要的目录 | |
| RUN mkdir -p /code/static/uploads | |
| # 创建启动脚本 | |
| RUN echo '#!/bin/bash\n\ | |
| # 优先使用Docker Secret\n\ | |
| if [ -f /run/secrets/MISTRAL_API_KEY ]; then\n\ | |
| export MISTRAL_API_KEY=$(cat /run/secrets/MISTRAL_API_KEY)\n\ | |
| # 其次使用Hugging Face Repository Secret\n\ | |
| elif [ -n "$HF_SECRET_MISTRAL_API_KEY" ]; then\n\ | |
| export MISTRAL_API_KEY=$HF_SECRET_MISTRAL_API_KEY\n\ | |
| # 最后尝试读取.env文件\n\ | |
| elif [ -f /code/.env ]; then\n\ | |
| export $(grep -v "^#" /code/.env | xargs)\n\ | |
| fi\n\ | |
| # 启动应用\n\ | |
| exec "$@"' > /code/entrypoint.sh && \ | |
| chmod +x /code/entrypoint.sh | |
| # 设置端口 | |
| ENV PORT=7860 | |
| # 设置健康检查 | |
| HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \ | |
| CMD curl -f http://localhost:${PORT}/ || exit 1 | |
| # 暴露端口 | |
| EXPOSE ${PORT} | |
| # 使用启动脚本 | |
| ENTRYPOINT ["/code/entrypoint.sh"] | |
| # 启动应用 | |
| CMD ["gunicorn", "--workers=2", "--bind=0.0.0.0:7860", "flask_app:app"] |