chatpreg / Dockerfile
leonsimon23's picture
Update Dockerfile
d9b85df verified
# 使用官方 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"]