Dockerfile 1.7 KB

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