Docker已安装
docker --version # 应该 >= 20.10
docker-compose --version # 应该 >= 1.29
.env 文件存在(包含数据库配置)# 运行测试脚本
./docker-test.sh
脚本会自动执行:
检查 .env 文件是否包含数据库配置:
cat .env | grep DB_
应该看到:
DB_HOST=rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com
DB_PORT=3306
DB_USER=ad_rw
DB_PASSWORD=p82SzuW4kAP3LJXcQGso
DB_NAME=tencent_ad_autoput
docker-compose build
说明:
docker-compose build --no-cachedocker-compose up -d
参数说明:
-d: 后台运行-d 会在前台显示日志# 实时查看日志
docker-compose logs -f
# 查看最近100行
docker-compose logs --tail=100
# 只看错误日志
docker-compose logs | grep ERROR
curl http://localhost:8080/health | jq .
预期响应:
{
"status": "healthy",
"timestamp": "2026-04-23T16:00:00Z",
"scheduler_running": true,
"latest_report": "llm_decisions_20260423.csv",
"jobs": [
{
"id": "decision_pipeline",
"name": "广告决策流程",
"next_run": "2026-04-24T03:00:00Z"
}
]
}
curl -X POST http://localhost:8080/trigger
预期响应:
{
"status": "triggered",
"message": "任务已添加到队列"
}
# 查看输出文件
ls -lh outputs/reports/
# 查看决策结果(CSV)
cat outputs/reports/llm_decisions_*.csv | head -20
# 查看执行日志
cat outputs/execution_log/execution_*.jsonl | tail -10
# 进入容器shell
docker exec -it auto_put_ad_mini bash
# 在容器内执行命令
docker exec -it auto_put_ad_mini python -c "from db import get_whitelist_accounts; print(get_whitelist_accounts())"
# 查看运行状态
docker-compose ps
# 查看资源占用
docker stats auto_put_ad_mini
# 查看详细信息
docker inspect auto_put_ad_mini
# 重启
docker-compose restart
# 停止后重新启动
docker-compose down
docker-compose up -d
# 查看容器网络
docker network ls
# 查看auto_put_ad_mini网络详情
docker network inspect auto_put_ad_mini_ad_network
症状:docker-compose up -d 后容器立即退出
排查步骤:
# 1. 查看日志
docker-compose logs
# 2. 查看容器退出原因
docker-compose ps -a
# 3. 检查配置文件
cat .env | grep -E "DB_|FEISHU_|ODPS_"
# 4. 尝试前台运行查看详细错误
docker-compose up
常见原因:
症状:curl http://localhost:8080/health 连接失败
排查步骤:
# 1. 确认容器正在运行
docker-compose ps
# 2. 确认端口映射
docker-compose ps | grep 8080
# 3. 查看容器日志
docker-compose logs --tail=50
# 4. 检查端口是否被占用
lsof -i :8080
解决方法:
# 如果8080端口被占用,修改docker-compose.yml
ports:
- "8081:8080" # 改用8081端口
症状:日志中出现 "数据库连接失败"
排查步骤:
# 1. 在容器内测试连接
docker exec -it auto_put_ad_mini bash
python3 << EOF
from db.connection import test_connection
test_connection()
EOF
# 2. 检查网络连通性
docker exec -it auto_put_ad_mini ping -c 3 rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com
# 3. 检查.env配置
docker exec -it auto_put_ad_mini env | grep DB_
解决方法:
症状:ModuleNotFoundError: No module named 'agent'
原因:Dockerfile中 COPY ../../agent /app/agent 路径错误
解决方法:
# 从项目根目录构建
cd /Users/liulidong/project/agent/Agent
docker build -t auto-put-ad-mini:latest -f examples/auto_put_ad_mini/Dockerfile .
# 或者修改Dockerfile,使用相对于构建上下文的正确路径
# 实时监控
docker stats auto_put_ad_mini
# 查看磁盘使用
docker exec -it auto_put_ad_mini du -sh /app/outputs/*
# 查看容器日志大小
docker inspect --format='{{.LogPath}}' auto_put_ad_mini | xargs ls -lh
# 清理日志(如果太大)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' auto_put_ad_mini)
docker-compose down
docker rmi auto_put_ad_mini-auto_put_ad_mini
docker-compose down -v # 删除所有卷(注意:会删除outputs数据)
# 清理未使用的镜像、容器、网络
docker system prune -a
# 1. 修改定时时间为1分钟后
# 在DMS中执行:
# UPDATE system_config SET config_value = '*/1 * * * *' WHERE config_key = 'cron_schedule';
# 2. 重启容器
docker-compose restart
# 3. 查看日志,等待任务执行
docker-compose logs -f
# 1. 清空outputs目录
rm -rf outputs/reports/*
# 2. 手动触发
curl -X POST http://localhost:8080/trigger
# 3. 等待30秒后查看输出
sleep 30
ls -lh outputs/reports/
# 1. 在DMS中禁用所有账户
# UPDATE account_whitelist SET enabled = FALSE;
# 2. 手动触发
curl -X POST http://localhost:8080/trigger
# 3. 查看日志,应该显示"白名单为空"
docker-compose logs --tail=50
# 4. 恢复白名单
# UPDATE account_whitelist SET enabled = TRUE WHERE account_id = 80769799;
Docker容器会读取以下环境变量:
| 变量 | 说明 | 示例 |
|---|---|---|
DB_HOST |
数据库主机 | rm-xxx.mysql.singapore.rds.aliyuncs.com |
DB_PORT |
数据库端口 | 3306 |
DB_USER |
数据库用户 | ad_rw |
DB_PASSWORD |
数据库密码 | xxx |
DB_NAME |
数据库名称 | tencent_ad_autoput |
TZ |
时区 | Asia/Shanghai 或 UTC |
EXECUTION_ENABLED |
执行开关(环境变量降级) | false |
WHITELIST_ENABLED |
白名单开关(环境变量降级) | true |
优先级:数据库配置 > 环境变量 > 默认值
测试完成后记得停止容器:
docker-compose down
保留输出文件: outputs 目录通过volume映射到本地,停止容器不会丢失数据。