Travel_Assistant / Dockerfile
Eliot0110's picture
fix: user access limit
aa5bcf3
# Dockerfile - 修复缓存权限
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 设置环境变量
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1
ENV PIP_NO_CACHE_DIR=1
ENV HF_HOME=/app/.cache/huggingface
ENV TRANSFORMERS_CACHE=/app/.cache/huggingface
ENV HF_DATASETS_CACHE=/app/.cache/huggingface
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
curl \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# 创建缓存目录并设置权限
RUN mkdir -p /app/.cache/huggingface && \
chmod 755 /app/.cache && \
chmod 755 /app/.cache/huggingface
# 升级 pip 到最新版本
RUN pip install --upgrade pip
# 复制requirements文件并安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目文件
COPY . .
# ==================== 新增指令开始 ====================
# 创建一个非 root 用户来运行应用,增加安全性
RUN useradd --create-home --shell /bin/bash appuser
# 预先创建 huggingface 的缓存目录,并把整个 /app 目录的所有权
# 递归地(-R)交给 appuser 用户
RUN mkdir -p /app/.cache/huggingface && chown -R appuser:appuser /app
# 切换到 appuser 用户来执行后续的命令
USER appuser
# ==================== 新增指令结束 ====================
# 在构建时进行HF认证(如果token可用)
ARG Assitant_tocken
RUN if [ -n "$Assitant_tocken" ]; then \
export HF_HOME=/app/.cache/huggingface && \
python -c "from huggingface_hub import login; login('$Assitant_tocken', add_to_git_credential=False)"; \
fi
# 暴露端口
EXPOSE 7860
# 健康检查
HEALTHCHECK --interval=30s --timeout=30s --start-period=120s --retries=3 \
CMD curl -f http://localhost:7860/health || exit 1
# 启动命令
CMD ["python", "-m", "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]