
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
使用Docker和Docker Compose部署taosync的完整指南,实现TrainAsONE和Intervals.icu之间的自动同步。
bash# 1. 创建目录结构 mkdir -p taosync/data cd taosync # 2. 创建.env文件 cat > .env << 'EOF' TAO_WEBCAL_URL=https://trainasone.com/webcal/YOUR_ID INTERVALS_API_KEY=API_KEY=your_key INTERVALS_ATHLETE_ID=i123456 INTERVALS_THRESHOLD_PACE=05:00 EOF # 3. 创建docker-compose.yml cat > docker-compose.yml << 'EOF' version: '3.8' services: taosync: image: docker.xuanyuan.run/patmanteau/taosync:latest container_name: taosync restart: unless-stopped env_file: - .env volumes: - ./data:/app/data command: taosync schedule EOF # 4. 设置数据目录权限 chmod 777 ./data # 5. 启动服务 docker compose up -d # 6. 查看日志 docker compose logs -f taosync
完成! taosync现在将自动:
优势:
docker compose pull自动更新步骤:
docker-compose.yml(参见快速开始).env文件docker compose up -d优势:
步骤:
bash# 1. 克隆仓库 git clone https://github.com/patmanteau/taosync.git cd taosync # 2. 创建.env文件 cp .env.example .env # 编辑.env文件,填入您的凭据 # 3. 创建数据目录 mkdir -p ./data chmod 777 ./data # 4. 构建并启动 docker compose up -d --build # 5. 查看日志 docker compose logs -f taosync
适用于简单的单容器部署:
bash# 1. 创建数据目录 mkdir -p ./data chmod 777 ./data # 2. 运行容器 docker run -d \ --name taosync \ --restart unless-stopped \ -e TAO_WEBCAL_URL="https://trainasone.com/webcal/YOUR_ID" \ -e INTERVALS_API_KEY="API_KEY=your_key" \ -e INTERVALS_ATHLETE_ID="i123456" \ -e INTERVALS_THRESHOLD_PACE="05:00" \ -v $(pwd)/data:/app/data \ docker.xuanyuan.run/patmanteau/taosync:latest \ taosync schedule # 3. 查看日志 docker logs -f taosync
TAO_WEBCAL_URL
您的TrainAsONE WebCal订阅URL。
如何获取:
示例:
bashTAO_WEBCAL_URL=https://trainasone.com/webcal/abc123def456
INTERVALS_API_KEY
您的Intervals.icu API密钥。
如何获取:
API_KEY=前缀)示例:
bashINTERVALS_API_KEY=API_KEY=1234567890abcdef
INTERVALS_ATHLETE_ID
您的Intervals.icu运动员ID。
如何获取:
https://intervals.icu/athletes/i123456/athletes/之后的部分(例如,i123456)示例:
bashINTERVALS_ATHLETE_ID=i123456
INTERVALS_THRESHOLD_PACE
您的阈值配速,格式为分:秒每公里。
默认值: 05:00
重要性: 用于将绝对配速转换为百分比。详见配置指南。
示例:
bashINTERVALS_THRESHOLD_PACE=04:30 # 较快的跑步者 INTERVALS_THRESHOLD_PACE=05:00 # 默认值 INTERVALS_THRESHOLD_PACE=06:15 # 初学者
INTERVALS_WORKOUT_TAG
应用于同步训练的标签。
默认值: TrainAsONE
bashINTERVALS_WORKOUT_TAG=TAO-Marathon
数据库和缓存
bash# 数据库位置(Docker环境保持默认) DATABASE_URL=sqlite:////app/data/taosync.db # 缓存持续时间(分钟) SYNC_INTERVAL=60
控制同步的时间和频率。
拉取计划
bash# 启用/禁用定时拉取 SCHEDULER_PULL_ENABLED=true # 从TrainAsONE拉取的时间(cron格式) SCHEDULER_PULL_CRON="0 */6 * * *" # 每6小时(默认)
推送计划
bash# 启用/禁用定时推送 SCHEDULER_PUSH_ENABLED=true # 推送到Intervals.icu的时间(cron格式) SCHEDULER_PUSH_CRON="0 8 * * *" # 每天早上8点(默认) # 提前同步的天数 SCHEDULER_PUSH_DAYS_AHEAD=7 # 未来7天(默认)
bash# 必需 TAO_WEBCAL_URL=https://trainasone.com/webcal/abc123def456 INTERVALS_API_KEY=API_KEY=1234567890abcdef INTERVALS_ATHLETE_ID=i123456 # 阈值配速(根据您的体能水平调整) INTERVALS_THRESHOLD_PACE=04:45 # 训练标签 INTERVALS_WORKOUT_TAG=TrainAsONE # 调度器:每4小时拉取一次 SCHEDULER_PULL_ENABLED=true SCHEDULER_PULL_CRON="0 */4 * * *" # 调度器:每天推送两次(早上和晚上) SCHEDULER_PUSH_ENABLED=true SCHEDULER_PUSH_CRON="0 7,19 * * *" SCHEDULER_PUSH_DAYS_AHEAD=14 # 数据库(保持默认) DATABASE_URL=sqlite:////app/data/taosync.db # 缓存:30分钟 SYNC_INTERVAL=30
bash# 启动服务 docker compose up -d # 停止服务 docker compose down # 重启服务 docker compose restart # 停止但不删除容器 docker compose stop # 停止后启动 docker compose start
bash# 实时跟踪日志 docker compose logs -f taosync # 查看最后100行 docker compose logs --tail=100 taosync # 查看特定时间以来的日志 docker compose logs --since=1h taosync # 查看带时间戳的日志 docker compose logs -t taosync
bash# 更新到最新版本(已发布镜像) docker compose pull docker compose up -d # 从源代码重新构建(本地构建) git pull docker compose build --no-cache docker compose up -d
bash# 检查容器状态 docker compose ps # 检查容器健康状况 docker compose ps | grep healthy # 查看资源使用情况 docker stats taosync # 访问容器shell docker compose exec taosync /bin/bash # 运行一次性命令 docker compose exec taosync taosync pull --list
在容器内运行CLI命令:
bash# 手动拉取 docker compose exec taosync taosync pull # 强制手动拉取 docker compose exec taosync taosync pull --force # 列出即将到来的训练 docker compose exec taosync taosync list --upcoming # 显示特定训练 docker compose exec taosync taosync show 2677 --convert # 手动推送(单个训练) docker compose exec taosync taosync push --uid 2677 # 手动推送(所有即将到来的训练) docker compose exec taosync taosync push --upcoming --days 7
调度器使用标准的cron格式:
┌─────────── 分钟 (0-59) │ ┌─────────── 小时 (0-23) │ │ ┌─────────── 日 (1-31) │ │ │ ┌─────────── 月 (1-12) │ │ │ │ ┌─────────── 星期 (0-6, 星期日 = 0) │ │ │ │ │ * * * * *
bash# 每6小时 SCHEDULER_PULL_CRON="0 */6 * * *" # 每天早上8点 SCHEDULER_PUSH_CRON="0 8 * * *" # 每天两次(早上8点和晚上8点) SCHEDULER_PUSH_CRON="0 8,20 * * *" # 每30分钟 SCHEDULER_PULL_CRON="*/30 * * * *" # 每4小时 SCHEDULER_PULL_CRON="0 */4 * * *" # 工作日早上7点 SCHEDULER_PUSH_CRON="0 7 * * 1-5" # 周日早上9点(每周计划) SCHEDULER_PUSH_CRON="0 9 * * 0"
保守模式(最少API调用):
bashSCHEDULER_PULL_CRON="0 6,18 * * *" # 早上6点和晚上6点 SCHEDULER_PUSH_CRON="0 8 * * *" # 每天早上8点 SCHEDULER_PUSH_DAYS_AHEAD=7
适中模式(默认):
bashSCHEDULER_PULL_CRON="0 */6 * * *" # 每6小时 SCHEDULER_PUSH_CRON="0 8 * * *" # 每天早上8点 SCHEDULER_PUSH_DAYS_AHEAD=7
频繁模式(始终保持最新):
bashSCHEDULER_PULL_CRON="0 */3 * * *" # 每3小时 SCHEDULER_PUSH_CRON="0 7,19 * * *" # 早上7点和晚上7点 SCHEDULER_PUSH_DAYS_AHEAD=14
手动模式(关闭计划):
bashSCHEDULER_PULL_ENABLED=false SCHEDULER_PUSH_ENABLED=false # 手动运行命令:docker compose exec taosync taosync pull
拉取计划:
推送计划:
SCHEDULER_PUSH_DAYS_AHEAD范围内的训练顺序执行:
示例日志输出:
2025-10-15 08:00:00 | INFO | 计划推送:首先拉取最新训练... 2025-10-15 08:00:02 | INFO | 拉取完成,现在推送到Intervals.icu... 2025-10-15 08:00:05 | INFO | 计划推送完成:5个成功,0个错误
数据库存储在Docker卷挂载中:
主机: ./data/taosync.db
容器: /app/data/taosync.db
这确保您的数据在容器重启和更新后仍然保留。
容器以用户app(UID 999)运行。数据目录必须可写:
bash# 最简单的方法:对所有人可写 chmod 777 ./data # 或设置特定所有权(Linux/macOS) sudo chown 999:999 ./data
bash# 备份数据库 cp data/taosync.db data/taosync.db.backup # 带时间戳的备份 cp data/taosync.db data/taosync.db.$(date +%Y%m%d_%H%M%S) # 从备份恢复 docker compose down cp data/taosync.db.backup data/taosync.db docker compose up -d
bash# 使用sqlite3访问数据库 docker compose exec taosync sqlite3 /app/data/taosync.db # 显示表 sqlite> .tables # 显示训练 sqlite> SELECT uid, start, summary FROM workout LIMIT 5; # 退出 sqlite> .exit
bash# 跟踪日志 docker compose logs -f taosync # 使用grep过滤 docker compose logs -f taosync | grep -i schedule docker compose logs -f taosync | grep -i error
bash# 检查错误 docker compose logs taosync | grep ERROR # 检查调度器活动 docker compose logs taosync | grep "Scheduled" # 统计今天成功推送的数量 docker compose logs --since=24h taosync | grep "Successfully pushed" # 查看启动日志 docker compose logs --tail=50 taosync | head -20
bash# 容器健康状态 docker compose ps # 应显示: # NAME STATUS PORTS # taosync Up 2 hours (healthy) # 详细健康检查 docker inspect taosync | grep -A 10 Health
bash# 实时统计 docker stats taosync # 一次性快照 docker stats --no-stream taosync
创建简单的监控脚本:
bash#!/bin/bash # monitor-taosync.sh if docker ps | grep -q taosync; then if docker logs --since=5m taosync 2>&1 | grep -qi error; then echo "⚠️ 在taosync日志中检测到错误" docker logs --since=5m taosync | grep -i error else echo "✓ taosync运行正常" fi else echo "❌ taosync容器未运行!" fi
使用cron定期运行:
bash# 每小时运行一次 0 * * * * /path/to/monitor-taosync.sh
检查状态:
bashdocker compose ps docker compose logs taosync
常见原因:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务