关联主题::
同级:: 2025-12-04_星期四
下一级::
2025-12-04_星期四进行升级:
一、想法
- 每20秒从cflow获取数据生成一份新的JSON
- 本地保留两份JSON:
- 一份是新生成的(current)
- 一份是已经推送到Git仓库的(last_pushed)
- 比较这两份JSON:
- 如果不一样,立即推送新的JSON到Git仓库
- 推送成功后,新的JSON变成”已推送的JSON”
- 如果一样,不做任何操作
当前问题:
- Docker容器里的代码和Git仓库不一致
- 拉取时有未提交的更改导致失败
- 推送时因为远程有新提交导致失败
解决方案:
- 修改同步脚本的逻辑
- 重新构建Docker镜像
- 在NAS上重新部署
需求:
1. 每20秒从CFlow获取数据,生成一份新的JSON
2. 本地保留两份JSON:
- current_json:刚从CFlow获取的最新数据
- last_pushed_json:上次成功推送到Git仓库的数据
3. 比较逻辑:
- 如果 current_json ≠ last_pushed_json,立即推送到Git仓库
- 推送成功后,current_json 变成新的 last_pushed_json
- 如果相同,不做任何操作(不提交、不推送)
这样可以避免频繁无意义的提交,只有数据真正变化时才推送。
解决思路:
-
修改同步脚本逻辑
让我修改 sync_to_github.py: -
nas执行如下操作:
# 1. 停止当前容器
docker stop cflow-ssn-sync
# 2. 删除旧容器
docker rm cflow-ssn-sync
# 3. 进入项目目录
cd /volume2/docker/cflow-ssn/cflow-ssn-main/cflow-ssn
# 4. 拉取最新代码
git fetch origin
git reset --hard origin/main
# 5. 重新构建镜像
docker compose build --no-cache
# 6. 启动新容器
docker compose up -d
# 7. 查看日志确认正常运行
docker logs -f cflow-ssn-sync