feat(deploy): 完成数据迁移与MySQL全链路(14表698k消息100%一致+5方言补丁+bind mount)
- migrate_sqlite_to_mysql.py: 逐表清空重导(幂等),复用repos强转,JSON列 解析,67万消息按msg_id键集分批,467s跑完14表全一致 - 修4个MySQL实测bug: NULLS LAST语法(compat.py编译补丁)、message.text TEXT→MEDIUMTEXT(64KB字节上限,实测20.8万字符车源清单)、URL列 String(1024)→Text(分享链接超1KB)、垃圾超长member_id源头清理 - compose: media改bind mount(不占C盘Docker虚拟磁盘,实测2.5GB卷把 C盘撑爆引擎500);mysql不映射宿主机3306 - 前端Dockerfile: npm ci→install(本地/容器npm版本锁漂移) - 五服务实测:nginx→backend→MySQL全链路返回真实数据(客户6859/A**杰25条 /搜索56条),媒体49536文件bind mount直读 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+4
-7
@@ -98,8 +98,9 @@ services:
|
||||
API_TOKEN: ${API_TOKEN:-}
|
||||
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-}
|
||||
volumes:
|
||||
# Persist downloaded media blobs across container restarts.
|
||||
- media_data:/data/media
|
||||
# 媒体走 bind mount(不占 Docker 虚拟磁盘——本机实测 C 盘被 2.5GB
|
||||
# volume 撑爆导致引擎 500,2026-08-22);服务器上数据直观可见好备份
|
||||
- ./yunke-server/media:/data/media
|
||||
ports:
|
||||
- "8000:8000"
|
||||
|
||||
@@ -136,10 +137,7 @@ services:
|
||||
FULL_SYNC_HOUR: ${FULL_SYNC_HOUR:-2}
|
||||
MESSAGE_INTERVAL_HOURS: ${MESSAGE_INTERVAL_HOURS:-4}
|
||||
volumes:
|
||||
# Share the media volume with backend so both services see the same
|
||||
# downloaded blobs (read-only would be ideal but the scheduler is the
|
||||
# writer; mounting read-write here is the simplest correct config).
|
||||
- media_data:/data/media
|
||||
- ./yunke-server/media:/data/media
|
||||
|
||||
# ----------------------------------------------------------------------- #
|
||||
# Frontend — built + served by nginx
|
||||
@@ -159,4 +157,3 @@ services:
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
media_data:
|
||||
|
||||
Reference in New Issue
Block a user