File size: 1,738 Bytes
510d407
 
 
 
 
 
dfbae6b
 
 
510d407
 
 
33ff25f
 
dfbae6b
 
 
 
 
d538b14
33ff25f
 
 
510d407
 
 
 
54a8028
 
 
 
 
 
 
510d407
d9b85df
 
33ff25f
245eb9d
 
510d407
 
 
 
 
54a8028
 
 
 
 
 
 
510d407
 
 
 
dfbae6b
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
# 使用官方 python 基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 设置环境变量避免交互式提示
ENV DEBIAN_FRONTEND=noninteractive

# 复制 requirements.txt 到容器中
COPY requirements.txt .

# 安装系统依赖和Python依赖
RUN apt-get update && \
    apt-get install -y \
        gcc \
        python3-dev \
        build-essential \
        && \
    pip install --upgrade pip==23.3.1 && \
    pip install --no-cache-dir -r requirements.txt && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 复制项目的所有文件到容器中
COPY . .

# 创建必要的目录并设置权限
RUN mkdir -p /app/public && \
    mkdir -p /app/.chainlit && \
    mkdir -p /app/.files && \
    chmod -R 777 /app/.chainlit && \
    chmod -R 777 /app/.files && \
    chmod -R 777 /app/public

# 创建 Chainlit 配置文件,确保使用正确的 TOML 语法
RUN echo -e "[general]\nenable_telemetry = false\ndefault_expand_messages = true\n\n[pdf]\nmax_size_mb = 25" > /app/.chainlit/config.toml

# 生成随机secret并创建环境变量文件
RUN python -c "import secrets; print('CHAINLIT_AUTH_SECRET=\"' + secrets.token_hex(32) + '\"')" > .env && \
    echo "FASTGPT_BASE_URL=\"${FASTGPT_BASE_URL}\"" >> .env && \
    echo "FASTGPT_API_KEY=\"${FASTGPT_API_KEY}\"" >> .env && \
    echo "FASTGPT_SHARE_ID=\"${FASTGPT_SHARE_ID}\"" >> .env && \
    echo "FASTGPT_API_DETAIL=${FASTGPT_API_DETAIL}" >> .env

# 创建非root用户
RUN useradd -m -u 1000 chainlit && \
    chown -R chainlit:chainlit /app

# 切换到非root用户
USER chainlit

# 暴露应用程序所需的端口
EXPOSE 8000

# 启动 Chainlit 应用程序
CMD ["chainlit", "run", "app.py", "--host", "0.0.0.0", "--port", "8000"]