# TrendRadar

# 环境

CentOS 7.6 64bit, 使用的腾讯云或阿里云,都可以行

# 安装


# 卸载旧版本(如果存在)
yum remove -y docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

# 安装基础依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 这个如果出现报错, 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 移除报错的信息源
yum-config-manager --disable docker-ce-stable
rm -f /etc/yum.repos.d/docker-ce.repo

# 添加阿里云 Docker CE 源:
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装最新版本(推荐)
yum install -y docker-ce docker-ce-cli containerd.io

# 启动服务并设置开机自启
systemctl start docker
systemctl enable docker


# --------docker compose安装步骤如下------------
# 先查看系统架构
uname -s  # 应为 Linux
uname -m  # 应为 x86_64

# 下载到当前目录查看是否能成功, github下载会很慢, 请将这个下载到本地,上传到服务器: /usr/local/bin
# 如果不能翻墙,用https://markkkkdkd.oss-cn-beijing.aliyuncs.com/docker/docker-compose-linux-x86_64  这个地址下载
cd /tmp
curl -L -O https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-Linux-x86_64

# 检查文件是否存在
ls -lh docker-compose-Linux-x86_64

# 将文件改一个名字
mv docker-compose-Linux-x86_64 docker-compose

# 设置权限
chmod +x /usr/local/bin/docker-compose

# 验证
docker-compose --version

以上是docker, docker-compose的安装教程

# 腾讯云容器镜像加速(速度更快)
sudo tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

我的服务器腾讯云, 将docker的仓库做一次修改,以避免后面的报错

# AI 服务(必须) 找到TrendRadar/config文件夹下的config.yaml
AI_API_KEY=sk-xxxxxx              # 你的 DeepSeek/OpenAI API Key
AI_PROVIDER=deepseek              # 根据 key 类型修改
api_base: "https://api.deepseek.com"   

# 推送服务(可选)
FEISHU_WEBHOOK_URL=https://xxx    # 飞书机器人 webhook
WEWORK_WEBHOOK_URL=https://xxx    # 企业微信机器人

以上配置deepseek的api-key

services:
  trendradar:
    ports:
      - "8080:8080"
    environment:
      - TZ=Asia/Shanghai
      # Web 服务器--注意这里:ENABLE_WEBSERVER 从false->true
      - ENABLE_WEBSERVER=${ENABLE_WEBSERVER:-true}
  
  trendradar-mcp:
    ports:
      - "3333:3333"

在docker/docker-compose.yml 文件中修改三处地方,trendradar.ports和trendradar-mcp.ports,以及将ENABLE_WEBSERVER=true

ENABLE_WEBSERVER=true

在docker/.env文件,找到ENABLE_WEBSERVER=false,将这个值改成true

# 确保在 TrendRadar/docker 目录下
docker-compose pull
docker-compose up -d

# 查看运行状态
docker ps
docker-compose logs -f

启动服务

# 关停服务,如何TrendRadar容器下的docker目录
docker-compose stop


docker exec -it trendradar python manage.py start_webserver

# 1. 在服务器上测试服务是否正常
curl http://127.0.0.1:8080

curl -I http://127.0.0.1:8080


# 进入 TrendRadar 容器
docker exec -it e6510eaa5474 bash

# 在容器内检查进程
ps aux | grep python

# 检查端口监听
netstat -tlnp

# 尝试容器内访问
curl http://127.0.0.1:8080


# 查看详细日志
docker logs e6510eaa5474

# 检查 MCP 服务健康状态
docker inspect e6057e5c83de | grep -A 5 -B 5 "Health"

# 查看容器完整信息
docker-compose ps
foo

注意,8080端口极容易冲突, 导致我这边排查了很久!

# nginx配置

server {
    listen 80;
    listen [::]:80;
    
    # 你的域名,如果没有域名用服务器IP
    server_name trend.jeecgruoyi.com;  # 修改为你的域名或服务器IP
    
    # 访问日志
    access_log /var/log/nginx/trendradar.access.log;
    error_log /var/log/nginx/trendradar.error.log;
    
    # 反向代理到TrendRadar应用
    location / {
        proxy_pass http://127.0.0.1:8888;
        
        # 代理头部设置
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 超时设置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
        
        # 禁用缓冲
        proxy_buffering off;
        
        # 启用WebSocket支持(如果需要)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    
    # 静态文件缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        proxy_pass http://127.0.0.1:8888;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
    
    # API接口不缓存
    location ~* /api/ {
        proxy_pass http://127.0.0.1:8888;
        add_header Cache-Control "no-cache, no-store, must-revalidate";
        add_header Pragma "no-cache";
        add_header Expires 0;
    }
}