# 使用官方 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"]