Spaces:
Sleeping
Sleeping
| # 使用 Python 3.8 作为基础镜像 | |
| FROM python:3.8-slim | |
| # 设置工作目录 | |
| WORKDIR /app | |
| # 设置环境变量 | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| DEBIAN_FRONTEND=noninteractive | |
| # 安装系统依赖 | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 创建非 root 用户 | |
| RUN useradd -m -u 1000 chainlit && \ | |
| mkdir -p /app/.files /app/.chainlit && \ | |
| chown -R chainlit:chainlit /app | |
| # 复制项目文件 | |
| COPY --chown=chainlit:chainlit . /app/ | |
| # 创建并激活虚拟环境 | |
| RUN python -m venv /opt/venv && \ | |
| . /opt/venv/bin/activate && \ | |
| pip install --no-cache-dir --upgrade pip setuptools wheel && \ | |
| pip install --no-cache-dir -r requirements.txt | |
| # 确保目录权限正确 | |
| RUN chown -R chainlit:chainlit /app | |
| # 切换到非 root 用户 | |
| USER chainlit | |
| # 创建启动脚本 | |
| RUN echo '#!/bin/bash\n\ | |
| export PATH="/opt/venv/bin:$PATH"\n\ | |
| rm -rf /app/.chainlit/config.toml\n\ | |
| python -c "import chainlit.config" || true\n\ | |
| exec chainlit run app.py --host 0.0.0.0 --port 7860\n\ | |
| ' > /app/start.sh && \ | |
| chmod +x /app/start.sh | |
| # 暴露 Hugging Face Spaces 默认端口 | |
| EXPOSE 7860 | |
| # 使用启动脚本作为入口点 | |
| CMD ["/app/start.sh"] |