Preg_drugchat / Dockerfile_temp
leonsimon23's picture
Rename Dockerfile to Dockerfile_temp
a7e5484 verified
# 使用 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"]