Dockerfile 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # 使用官方 Python 3.10 slim 镜像
  2. FROM python:3.10-slim
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 安装系统依赖(ODPS、SSL等)
  6. RUN apt-get update && apt-get install -y \
  7. gcc \
  8. g++ \
  9. libssl-dev \
  10. libffi-dev \
  11. curl \
  12. && rm -rf /var/lib/apt/lists/*
  13. # 复制依赖文件
  14. COPY examples/auto_put_ad_mini/requirements.txt .
  15. # 安装 Python 依赖
  16. RUN pip install --no-cache-dir -r requirements.txt
  17. # 复制 Agent 框架(从项目根目录)
  18. COPY agent /app/agent
  19. # 复制项目文件(排除 outputs/ 和 .venv/,不包含agent目录)
  20. COPY examples/auto_put_ad_mini/*.py /app/
  21. COPY examples/auto_put_ad_mini/prompts /app/prompts/
  22. COPY examples/auto_put_ad_mini/tools /app/tools/
  23. COPY examples/auto_put_ad_mini/skills /app/skills/
  24. COPY examples/auto_put_ad_mini/db /app/db/
  25. COPY examples/auto_put_ad_mini/*.json /app/
  26. COPY examples/auto_put_ad_mini/*.md /app/
  27. # 创建输出目录
  28. RUN mkdir -p outputs/{raw,ad_status,reports,execution_log,data}
  29. # 设置环境变量(生产环境覆盖)
  30. ENV PYTHONUNBUFFERED=1 \
  31. TZ=UTC \
  32. PYTHONPATH=/app
  33. # 暴露端口(用于 FastAPI server.py)
  34. EXPOSE 8080
  35. # 健康检查(使用 FastAPI 端点,如果可用)
  36. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  37. CMD curl -f http://localhost:8080/health || python -c "import pathlib; pathlib.Path('/app/outputs').exists()" || exit 1
  38. # 默认命令:启动 FastAPI 服务器(而非单次执行)
  39. # 如需单次执行,可覆盖为:docker run <image> python execute_once.py
  40. CMD ["python", "server.py"]