tcm_expert_builder / Dockerfile_bak
leonsimon23's picture
Rename Dockerfile to Dockerfile_bak
e3184d8 verified
# 使用官方Python 3.10 slim镜像
FROM python:3.10-slim
# --- 1. 安装系统依赖 ---
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
build-essential \
libgomp1 \
&& rm -rf /var/lib/apt/lists/*
# --- 2. 关键步骤:克隆私有仓库 ---
WORKDIR /src
# 注意:确保你的Secrets名为GH_USER和GH_TOKEN
RUN --mount=type=secret,id=GH_USER \
--mount=type=secret,id=GH_TOKEN \
git clone https://$(cat /run/secrets/GH_USER):$(cat /run/secrets/GH_TOKEN)@github.com/leoncool23/tcm_expert_builder.git
# --- 3. 设置正确的工作目录 ---
WORKDIR /src/tcm_expert_builder
# --- 4. 设置Python环境 ---
# 复制 requirements.txt (作为最佳实践,尽管git clone已经包含了它)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# --- 5. 配置NLTK和ChromaDB环境 ---
# (a) 设置NLTK数据路径
ENV NLTK_DATA /usr/local/share/nltk_data
# (b) 创建目录并下载NLTK模型
RUN mkdir -p $NLTK_DATA
RUN python -m nltk.downloader -d $NLTK_DATA punkt averaged_perceptron_tagger maxent_ne_chunker words
# (c) [核心修复] 禁用ChromaDB的遥测功能,避免启动错误
ENV ANONYMIZED_TELEMETRY False
# --- 6. 创建应用所需目录并设置权限 ---
RUN useradd --create-home --shell /bin/bash appuser
RUN mkdir -p ./uploads ./data
# 将整个工作目录的所有权交给我们的非root用户
RUN chown -R appuser:appuser .
USER appuser
# 以appuser身份创建vector_db目录,确保权限正确
RUN mkdir -p ./data/vector_db
# --- 7. 运行应用 ---
EXPOSE 7860
CMD ["gunicorn", "--workers", "1", "--bind", "0.0.0.0:7860", "app:app"]