MistralApp / Dockerfile
chenzerong
fix error
35b7d71
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"]