支持 MySQL 迁移与性能优化
This commit is contained in:
+46
-3
@@ -1,16 +1,31 @@
|
||||
services:
|
||||
douyu-login:
|
||||
build: .
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
# 服务器默认走阿里云镜像;本地测试设为 false。
|
||||
USE_CHINA_MIRRORS: ${USE_CHINA_MIRRORS:-true}
|
||||
container_name: douyu-login
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8800:8800"
|
||||
# 保持现有服务端口;可通过 APP_PORT 覆盖。
|
||||
- "${APP_PORT:-8000}:8800"
|
||||
volumes:
|
||||
# 持久化数据库和日志
|
||||
# 持久化运行时文件和日志,数据库由 mysql-data 卷管理。
|
||||
- ./data:/app/data
|
||||
- ./logs:/app/logs
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# MySQL 仅在 Compose 内网开放,不映射宿主机端口。
|
||||
- DB_HOST=mysql
|
||||
- DB_PORT=3306
|
||||
- DB_NAME=${MYSQL_DATABASE:-douyu_login}
|
||||
- DB_USER=${MYSQL_USER:-douyu_login}
|
||||
- DB_PASSWORD=${MYSQL_PASSWORD:?请在 .env 中设置 MYSQL_PASSWORD}
|
||||
- DB_POOL_SIZE=${DB_POOL_SIZE:-20}
|
||||
- DB_MAX_OVERFLOW=${DB_MAX_OVERFLOW:-20}
|
||||
- DB_POOL_TIMEOUT=${DB_POOL_TIMEOUT:-30}
|
||||
- DB_POOL_RECYCLE=${DB_POOL_RECYCLE:-1800}
|
||||
# JWT 密钥(生产环境务必修改,可用 python -c "import secrets; print(secrets.token_urlsafe(32))" 生成)
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY:-}
|
||||
# 敏感字段落盘加密密钥(生产环境务必长期保持不变)
|
||||
@@ -26,6 +41,9 @@ services:
|
||||
- MAIL_ROUNDCUBE_URL=${MAIL_ROUNDCUBE_URL:-}
|
||||
# Uvicorn reload(生产环境保持 false)
|
||||
- UVICORN_RELOAD=${UVICORN_RELOAD:-false}
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
# 增加文件描述符限制,避免 "Too many open files" 错误
|
||||
ulimits:
|
||||
nofile:
|
||||
@@ -36,3 +54,28 @@ services:
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
|
||||
mysql:
|
||||
image: docker.m.daocloud.io/library/mysql:8.4
|
||||
container_name: douyu-login-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-douyu_login}
|
||||
- MYSQL_USER=${MYSQL_USER:-douyu_login}
|
||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD:?请在 .env 中设置 MYSQL_PASSWORD}
|
||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:?请在 .env 中设置 MYSQL_ROOT_PASSWORD}
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_0900_ai_ci
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "mysqladmin ping -h localhost -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
start_period: 20s
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
|
||||
Reference in New Issue
Block a user