Dockerfile
Rama main · réplica de lectura del repositorio original.
# Scout Agent Docker Image
# 多阶段构建,减小最终镜像大小
# Stage 1: 构建依赖
FROM python:3.11-slim as builder
WORKDIR /build
# 安装构建依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装 Python 依赖到虚拟环境
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --no-cache-dir -r requirements.txt
# Stage 2: 运行环境
FROM python:3.11-slim
LABEL maintainer="Scout Agent <scout@example.com>"
LABEL description="Scout Agent - 智能个人助手"
LABEL version="1.0.0.5"
# 设置环境变量
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
SCOUT_DATA_DIR=/app/data \
SCOUT_WEB_HOST=0.0.0.0 \
SCOUT_WEB_PORT=8848
# 安装运行时依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# 创建非 root 用户
RUN groupadd -r scout && useradd -r -g scout -m scout
# 从 builder 阶段复制虚拟环境
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
# 设置工作目录
WORKDIR /app
# 复制应用代码
COPY --chown=scout:scout . .
# 创建数据目录
RUN mkdir -p /app/data && chown -R scout:scout /app/data
# 切换到非 root 用户
USER scout
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD curl -f http://localhost:8848/health || exit 1
# 暴露端口
EXPOSE 8848
# 启动命令
CMD ["python", "-m", "scout.cli", "--web", "--host", "0.0.0.0", "--port", "8848"]