fix(compose): 补容器资源限额,并修正数据卷默认值以防错挂空卷

一、内存 / 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 是否设置该变量。
This commit is contained in:
yml2213
2026-10-02 19:34:29 +08:00
parent 168421b40c
commit 2bdabc4e03
+10 -3
View File
@@ -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: