From 2bdabc4e03cb086cd9b9d13bcf02199d40961cc9 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 2 Oct 2026 18:39:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(compose):=20=E8=A1=A5=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E9=99=90=E9=A2=9D=EF=BC=8C=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E6=95=B0=E6=8D=AE=E5=8D=B7=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E4=BB=A5=E9=98=B2=E9=94=99=E6=8C=82=E7=A9=BA=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一、内存 / CPU 限额 douyu-login 与 mysql 此前均为 unlimited(Mem=0、NanoCpus=0)。本机 7G 且与 order_site 共用,任一方内存失控都会把整机拖垮(order_site 曾因此被 OOM kill)。 现各限 2G / 2 核;可用 DOUYU_LOGIN_MEM_LIMIT、DOUYU_LOGIN_CPUS、MYSQL_MEM_LIMIT、 MYSQL_CPUS 在 .env 覆盖。 二、修正 mysql-data 的卷名默认值(重要,防数据事故) 原默认值 live-hub-py_mysql-data 是**另一个空卷**,真实数据在项目改名前的 douyu_login_py_mysql-data(4G+)。由于该行改动之后一直没重建过容器, 隐患一直没暴露;2026-10-02 第一次重建容器即挂到空卷, 表现为数据全丢(douyu_tasks 由 228475 行变成空表)。 现默认值指向真实卷,并默认 external: true(不再由本项目创建/删除该卷, docker compose down -v 也不会把它删掉)。修完不再依赖 .env 是否设置该变量。 --- docker-compose.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f92b043..d7302d1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,8 @@ services: # 服务器默认走阿里云镜像;本地测试设为 false。 USE_CHINA_MIRRORS: ${USE_CHINA_MIRRORS:-true} restart: unless-stopped + mem_limit: ${DOUYU_LOGIN_MEM_LIMIT:-2g} + cpus: ${DOUYU_LOGIN_CPUS:-2} ports: # 保持现有服务端口;可通过 APP_PORT 覆盖。 - "${APP_PORT:-8000}:8800" @@ -90,6 +92,8 @@ services: mysql: image: ${MYSQL_IMAGE:-docker.m.daocloud.io/library/mysql:8.4} restart: unless-stopped + mem_limit: ${MYSQL_MEM_LIMIT:-2g} + cpus: ${MYSQL_CPUS:-2} ports: # 仅绑定宿主机本地地址,供 ./dev.sh 的本地后端连接,不对外网开放。 - "${MYSQL_BIND_HOST:-127.0.0.1}:${MYSQL_HOST_PORT:-3307}:3306" @@ -118,9 +122,12 @@ services: volumes: mysql-data: - # 目录/项目改名时优先复用旧项目的数据卷;新环境默认使用新项目名卷。 - name: ${MYSQL_VOLUME_NAME:-live-hub-py_mysql-data} - external: ${MYSQL_VOLUME_EXTERNAL:-false} + # 复用项目改名前的旧数据卷 douyu_login_py_mysql-data(4G+ 真实数据)。 + # 注意:曾用默认值 live-hub-py_mysql-data,那是**另一个空卷** —— 目录改名后第一次 + # 重建容器会挂到空卷上,看起来像数据全丢(2026-10-02 实际发生过)。 + # 因此默认值与 external 都指向真实卷,不依赖 .env 是否设置。 + name: ${MYSQL_VOLUME_NAME:-douyu_login_py_mysql-data} + external: ${MYSQL_VOLUME_EXTERNAL:-true} networks: order-site-net: