fix(deploy): 按需重建容器,不再每次部署都重启 MySQL

`deploy.sh` 主流程里是 `$COMPOSE up -d --force-recreate`(不带服务名),所以每次
部署都会把所有服务重建一遍 —— 包括 mysql。mysql 重启期间应用连不上库,表现为
每次部署都有约 90 秒的 502(今天几次部署都踩到了)。

改为 `$COMPOSE up -d douyu-login`:只处理应用服务,且交给 compose 判断是否需要
重建(镜像或容器配置真的变了才重建)。这样:

- 代码部署:应用镜像变了 → 只重建应用,mysql 完全不动;
- .env 改动:compose 会检测到容器配置变化 → 重建应用,mysql 仍不动;
- 什么都没变:不重建,零中断。

mysql 只在它自己的配置真的变了时才动(例如加 --default-time-zone 那次)。
This commit is contained in:
yml2213
2026-10-02 21:26:39 +08:00
parent c3fd299f3a
commit ada3915856
+5 -2
View File
@@ -100,8 +100,11 @@ cmd_deploy() {
echo ""
echo "正在启动服务..."
# 重新创建应用容器,确保生产环境不会沿用旧的 reload 配置。
$COMPOSE up -d --force-recreate
# 只处理应用服务,按需重建:镜像或配置变了 compose 才会重建它。
# 曾经这里是不带服务名的 `up -d --force-recreate`,会把 mysql 也一起重建 ——
# 每次部署都有约 90 秒的 502(mysql 重启期间应用连不上库)。
# 现在 mysql 只在它自己的配置真的变了时才动,代码部署不再影响数据库。
$COMPOSE up -d douyu-login
echo ""
echo "等待服务启动..."