File size: 1,881 Bytes
1fb28f9
 
 
 
 
 
0db07e3
a0e8ced
1fb28f9
3b7ade9
9894532
3b7ade9
 
 
 
c17d469
 
 
 
 
 
 
3b7ade9
5172387
0cab61f
3b7ade9
 
 
0db07e3
 
 
1fb28f9
c17d469
1fb28f9
a0e8ced
 
 
30ff34b
a0e8ced
 
b8a5778
a0e8ced
 
 
 
 
 
 
 
b8a5778
 
 
a9a3679
5f25b03
 
 
a0e8ced
 
 
 
 
 
 
 
f436121
 
 
5921baf
f436121
 
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
59
60
61
62
63
64
65
66
67
68
69
70
# 基础镜像使用Python 3.9
FROM python:3.9

# 设置工作目录
WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y curl sudo fontconfig wget

# 设置所有环境变量到 /tmp 目录下
ENV OLLAMA_HOME=/.ollama
ENV GRADIO_TEMP_DIR=/tmp/gradio
ENV MPLCONFIGDIR=/tmp/matplotlib
ENV FONTCONFIG_PATH=/tmp/fontconfig
ENV XDG_CACHE_HOME=/tmp/cache

# 创建必要的目录并设置权限
RUN mkdir -p ${OLLAMA_HOME} \
    && mkdir -p ${GRADIO_TEMP_DIR} \
    && mkdir -p ${MPLCONFIGDIR} \
    && mkdir -p ${FONTCONFIG_PATH} \
    && mkdir -p ${XDG_CACHE_HOME} \
    && chmod -R 777 /tmp \
    && chmod -R 777 ${OLLAMA_HOME}

# 确保/app目录可写
RUN chmod -R 777 /app

# 安装Ollama
RUN curl -L https://ollama.ai/install.sh | sh

# 安装Gradio及其依赖
RUN pip install gradio requests

# 下载模型文件(使用wget并添加重试机制)
RUN wget --tries=3 --retry-connrefused --waitretry=5 --timeout=30 \
    -O /app/model.gguf \
    https://huggingface.co/shenzhi-wang/Llama3.1-8B-Chinese-Chat/resolve/main/gguf/llama3.1_8b_chinese_chat_q4_k_m.gguf?download=true

# 验证文件是否为GGUF格式
COPY <<-'EOF' /app/verify_gguf.py
import sys
def is_gguf(file_path):
    with open(file_path, "rb") as f:
        magic = f.read(4)
        return magic == b"GGUF"
if not is_gguf("/app/model.gguf"):
    print("Error: Downloaded file is not in GGUF format")
    sys.exit(1)
EOF

RUN python3 /app/verify_gguf.py

# 将当前目录下的所有文件复制到容器内的/app目录
COPY . /app

# 创建新的Modelfile
RUN echo "FROM /app/model.gguf\n\
PARAMETER stop \"Human:\"\n\
PARAMETER stop \"Assistant:\"\n\
PARAMETER temperature 0.7\n\
PARAMETER top_k 40\n\
PARAMETER top_p 0.9" > /app/Modelfile

# 添加启动脚本并设置执行权限
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh

# 使用启动脚本
CMD ["/app/start.sh"]