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"] |