页面更新:

Docker 部署

Docker 是推荐的部署方式之一,适合有服务器或 NAS 的用户。 本指南将引导你通过 Docker 完成 TrendRadar 的部署,无需安装 Python 环境。
当前任务 · Docker
让 TrendRadar 在你的服务器或 NAS 上持续运行,运行数据默认保存在本地。
更换部署方式
11 · 运行前配置至少一个推送渠道
22 · 完成标准日志没有错误,并在目标应用收到测试或首次推送
33 · 收到后配置内容与推送

镜像概览

TrendRadar 提供两个 Docker 镜像,分别对应不同的功能模块:
镜像名称用途说明
wantcat/trendradar新闻推送服务定时抓取新闻、关键词匹配、推送通知(必装)
wantcat/trendradar-mcpAI 分析服务基于 MCP 协议的 AI 对话分析(可选)

方法一:Docker Compose 部署(推荐)

Docker Compose 是最便捷的部署方式,可以按需启动核心推送服务或可选的 MCP 服务。 以下步骤先带你完成最小可用的推送流程。
1
克隆项目
获取最新代码和配置文件
2
了解目录结构
熟悉各配置文件的作用
3
编辑配置
根据需求修改配置文件
4
启动并验证
先运行核心推送服务,确认收到测试通知

1. 克隆项目

打开终端,执行以下命令将项目克隆到本地:
git clone https://github.com/sansan0/TrendRadar.git && cd TrendRadar

2. 目录结构

克隆完成后,你会看到以下目录结构。部署时只需关注 config/ 和 docker/ 两个目录:
Project/
├── config/
│   ├── config.yaml                # 核心配置文件(必须编辑)
│   ├── frequency_words.txt        # 关键词配置(必须编辑)
│   ├── timeline.yaml              # 时间线调度配置
│   ├── ai_analysis_prompt.txt     # AI 分析提示词(可选)
│   ├── ai_translation_prompt.txt  # AI 翻译提示词(可选)
│   ├── ai_interests.txt           # AI 兴趣过滤(可选)
│   ├── ai_filter/                 # AI 筛选提示词目录
│   └── custom/                    # 用户自定义配置
│       ├── ai/                    # 自定义 AI 提示词
│       └── keyword/               # 自定义关键词文件
└── docker/
    ├── .env                       # 密钥与 Docker 配置(当前为已跟踪文件)
    └── docker-compose.yml         # Docker Compose 编排文件

3. 配置文件说明

每个配置文件负责不同的功能模块,以下是简要说明:
文件作用是否必须
config/config.yaml核心配置文件,包含平台选择、推送渠道、AI 设置等所有系统参数必须
config/frequency_words.txt关键词配置,定义你关注的新闻话题和过滤规则必须
config/timeline.yaml时间线调度配置,控制每天什么时间执行哪些任务可选
docker/.env密钥与 Docker 配置;当前文件受版本控制,填写后必须避免提交真实值必须

4. 环境变量覆盖机制

TrendRadar 支持通过环境变量覆盖 config.yaml 中的配置。 优先级为:环境变量 > config.yaml 文件。
这意味着你可以将敏感信息(如 API Key、Webhook URL)放在 docker/.env 文件中, 而不必写入 config.yaml。Docker Compose 会自动读取 .env 文件中的变量。
环境变量对应配置说明
WEBSERVER_PORT-内置报告服务器端口,默认 8080
FEISHU_WEBHOOK_URLnotification.channels.feishu.webhook_url飞书机器人 Webhook 地址
AI_ANALYSIS_ENABLEDai_analysis.enabled是否启用 AI 分析功能(true/false)
AI_API_KEYai.api_keyAI 服务的 API Key
AI_MODELai.modelAI 模型标识(如 deepseek/deepseek-v4-flash)
S3_ENDPOINT_URLstorage.remote.endpoint_urlS3 兼容存储的 Endpoint 地址
S3_ACCESS_KEY_IDstorage.remote.access_key_idS3 存储的 Access Key
S3_SECRET_ACCESS_KEYstorage.remote.secret_access_keyS3 存储的 Secret Key
S3_BUCKET_NAMEstorage.remote.bucket_nameS3 存储桶名称
CRON_SCHEDULE-Docker 定时任务表达式(默认 */30 * * * *,每 30 分钟执行一次)
RUN_MODE-运行模式:cron(定时循环运行)或 once(运行一次后退出)
IMMEDIATE_RUN-容器启动时是否立即执行一次(默认 true)
以上为常用环境变量。完整列表请参考 docker-compose.yml 文件。

5. 启动服务

进入 docker/ 目录,根据你的需求选择启动方式: 第一次只需要新闻抓取与推送,优先选择「仅推送服务」;MCP 是完成基础流程后的可选增强。
只启动新闻推送服务,不启动 MCP 分析服务:
cd docker
docker compose pull trendradar
docker compose up -d trendradar

进阶参考:用 Docker Run 启动 MCP

以下命令只启动可选的 MCP 分析服务,不是新闻抓取与推送服务的完整部署命令。 首次部署请使用上方 Docker Compose 流程,避免漏掉持久化、配置和定时运行参数。
docker run -d \
  --name trendradar-mcp \
  -p 3333:3333 \
  -v ./config:/app/config \
  wantcat/trendradar-mcp
参数说明:
  • -d:后台运行容器
  • --name trendradar-mcp:为容器设置名称,方便后续管理
  • -p 3333:3333:将容器内 3333 端口映射到宿主机
  • -v ./config:/app/config:将本地配置目录挂载到容器内

访问内置报告服务器

TrendRadar 在 cron 模式下会启动内置报告服务器,用于查看生成的网页报告。
默认访问地址:http://127.0.0.1:8080
端口修改:通过 docker/.env 中的 WEBSERVER_PORT 修改。
远程访问:Compose 默认绑定服务器自身的 127.0.0.1。在 NAS 或 VPS 上部署时, 你不能在自己电脑上直接打开 localhost:8080;请使用 SSH 隧道或经过访问控制的反向代理,不要直接暴露到公网。

常用管理命令

以下是日常管理 TrendRadar 容器时常用的命令。 你可以在终端中直接执行这些命令来管理和监控服务。
容器内管理工具
通过镜像内置的 manage.py 查看状态,或手动执行一次任务。
容器运行状态检查 supercronic、配置文件与定时任务
docker exec -it trendradar python manage.py status
立即抓取一次会实际执行新闻抓取、分析与推送流程
docker exec -it trendradar python manage.py run
实时日志在容器内持续读取运行日志
docker exec -it trendradar python manage.py logs
当前配置显示已脱敏的环境配置
docker exec -it trendradar python manage.py config
输出文件列出数据库、快照与报告文件
docker exec -it trendradar python manage.py files
报告 Web 服务器
管理容器内用于浏览 output 目录和历史 HTML 报告的静态 Web 服务。
启动报告服务使用 WEBSERVER_PORT 配置的端口提供静态报告
docker exec -it trendradar python manage.py start_webserver
停止报告服务停止独立的静态报告进程
docker exec -it trendradar python manage.py stop_webserver
查看服务状态显示进程、端口和报告访问地址
docker exec -it trendradar python manage.py webserver_status
Docker 容器操作
使用 Docker 原生命令查看日志、控制容器和更新镜像。
跟踪日志按 Ctrl+C 退出,不会停止容器
docker logs -f trendradar
重启容器重新启动抓取服务
docker restart trendradar
停止容器停止抓取服务
docker stop trendradar
删除已停止容器移除容器本身,不删除已挂载的配置与输出目录
docker rm trendradar
更新并重启拉取最新镜像并重新创建服务
cd docker
docker compose pull trendradar
docker compose up -d trendradar

数据持久化

TrendRadar 的运行数据(抓取结果、推送历史、HTML 报告等)存储在容器内的 output/ 目录中。
如需了解更多关于 S3 兼容存储的远程备份方案,请参考「存储配置」章节。