File size: 1,547 Bytes
8ff3f24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dbca12
 
 
8ff3f24
35b7d71
8ff3f24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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"]