From ada39158568726bab0097eec0e1afe2543df1acc Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 2 Oct 2026 21:26:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=E6=8C=89=E9=9C=80=E9=87=8D?= =?UTF-8?q?=E5=BB=BA=E5=AE=B9=E5=99=A8=EF=BC=8C=E4=B8=8D=E5=86=8D=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E9=83=A8=E7=BD=B2=E9=83=BD=E9=87=8D=E5=90=AF=20MySQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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 那次)。 --- deploy.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deploy.sh b/deploy.sh index 4ce284b..fe947c1 100755 --- a/deploy.sh +++ b/deploy.sh @@ -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 "等待服务启动..."