XuqmGroup-PrivateDeploy/docker-compose.infra.yml
徐勤民 43a423b85c feat: 一键安装向导 + 交互式租户初始化
- 新增 install.sh:curl 一键下载依赖安装 + 自动解压部署包 + 启动部署向导
- deploy-szyx.sh:移除硬编码租户常量,改为交互式选择(新建/迁移)
  - 新建租户:收集邮箱/用户名/密码,bcrypt 写入 bootstrap.env
  - 迁移租户:提示输入生产 MySQL 配置,bcrypt 验证主账号后执行迁移
  - 已有数据时迁移前显示红色警告要求 yes 确认
- 移除 docs-site 独立容器(文档已内置于 tenant-web/docs/)
- nginx 和 docker-compose 同步清理 docs-site 残留配置

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:29:57 +08:00

62 行
2.8 KiB
YAML

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# =============================================================================
# XuqmGroup 私有化部署 — 基础设施服务MySQL / Redis
#
# 使用场景MYSQL_MODE=managed 或 REDIS_MODE=managed 时,
# 由 Docker Compose 启动容器化数据库,无需客户自备。
#
# 生产环境建议使用客户自备的 external 模式,由 DBA 管理数据库。
# 开发/体验环境可使用 managed 模式快速启动。
#
# 数据目录:
# MySQL 数据 → ./data/mysql (重启后保留)
# Redis 数据 → ./data/redis AOF 持久化,重启后保留)
# =============================================================================
services:
# ---------------------------------------------------------------------------
# MySQL 8.4托管模式,profile: infra-mysql
# 仅在 MYSQL_MODE=managed 时启用
# 首次启动自动创建数据库和业务账号
# ---------------------------------------------------------------------------
mysql:
image: mysql:8.4
profiles: ["infra-mysql"]
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} # root 密码(见 config/secrets.env
MYSQL_DATABASE: ${MYSQL_DATABASE} # 自动创建的数据库名
MYSQL_USER: ${MYSQL_USERNAME} # 业务账号(自动创建)
MYSQL_PASSWORD: ${MYSQL_PASSWORD} # 业务账号密码
TZ: Asia/Shanghai # 时区,与 Spring Boot 保持一致
command:
- --character-set-server=utf8mb4 # 服务器默认字符集,支持中文和 emoji
- --collation-server=utf8mb4_unicode_ci # 排序规则
- --default-time-zone=+08:00 # 数据库时区
ports:
# 暴露到宿主机,方便外部工具(如 Navicat连接
# 生产环境可注释此行,仅允许容器内部访问
- "${MYSQL_PORT:-3306}:3306"
volumes:
- ./data/mysql:/var/lib/mysql # 数据持久化,重启后保留
restart: unless-stopped
# ---------------------------------------------------------------------------
# Redis 7.4托管模式,profile: infra-redis
# 仅在 REDIS_MODE=managed 时启用
# 启用 AOF 持久化,重启后数据不丢失
# ---------------------------------------------------------------------------
redis:
image: redis:7.4-alpine
profiles: ["infra-redis"]
command:
- redis-server
- --appendonly yes # 开启 AOF 持久化
- --requirepass ${REDIS_PASSWORD} # 密码(见 config/secrets.env
ports:
# 暴露到宿主机,方便调试
# 生产环境可注释此行
- "${REDIS_PORT:-6379}:6379"
volumes:
- ./data/redis:/data # AOF 文件持久化目录
restart: unless-stopped