test-backend/deploy/README.md

4.6 KiB
Raw Permalink Blame History

后端 Docker 部署

部署架构

架构 compose 文件 说明
单体 docker-compose.yml 一个 App 容器
Spring Cloud docker-compose.cloud.yml Nacos + Gateway + System

中间件MySQL / Redis / MinIO独立选择,不绑定架构:

中间件 选项 说明
MySQL docker / external Docker 安装 or 连接外部服务
Redis docker / external Docker 安装 or 连接外部服务
MinIO docker / external / none Docker 安装 / 外部 / 不使用

前置条件

  • Docker + Docker Compose
  • 外部 MySQL 场景:需提前建好 nacosghb_base 两个库(见下文)

快速开始

cd deploy

# 1. 交互式配置
bash deploy.sh init

# 2. 编译镜像(首次 10-20 分钟)
bash deploy.sh build

# 3. 启动
bash deploy.sh start

完整步骤Spring Cloud + 外部 MySQL/Redis

第一步:初始化数据库

# Nacos 内部存储库(必须)
mysql -h <MySQL地址> -u root -p < db/tables_nacos.sql

# 业务库
mysql -h <MySQL地址> -u root -p -e "CREATE DATABASE IF NOT EXISTS ghb_base DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -h <MySQL地址> -u root -p ghb_base < db/ghb_base_init.sql

第二步:交互式配置

cd deploy
bash deploy.sh init

按提示填写:

部署架构:           2. Spring Cloud
MySQL:              2. 连接外部服务 → 10.13.13.1:3306
Redis:              2. 连接外部服务 → 10.13.13.1:56379
MinIO:              3. 不使用
外接数据库是否已建表? Y
是否集成前端?        Y需先 pnpm build

第三步:编译 + 启动

bash deploy.sh build && bash deploy.sh start

start 在 Spring Cloud 模式下自动执行:

Phase 1: 启动 Nacos → 等待健康检查 → 无配置则自动导入
Phase 2: 启动 System → Gateway

第四步:验证

服务 地址
Nacos http://localhost:8848/nacos
Gateway 文档 http://localhost:9999/doc.html
System 文档 http://localhost:7001/doc.html
前端 http://localhost:3001(如启用)

Nacos 服务列表应有 jeecg-gatewayjeecg-system


架构链路

前端 :3001
  ↓
Gateway :9999 ──┐
  ↓              │ ghb-netDocker 内部网络)
System :7001 ────┤
  ↓              │
Nacos :8848 ─────┘  ← init-nacos.sh 自动推送配置
  ↓
外部 MySQL / Redis  ← Nacos 配置中地址已被替换

Nacos 配置原理

deploy/nacos/config/*.yaml 模板中用占位符,init-nacos.sh 运行时从 .env 读取实际值替换后推送到 Nacos

# 模板nacos/config/jeecg-dev.yaml
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${DB_NAME}?...
host: ${REDIS_HOST}
port: ${REDIS_PORT}

# ↓ init-nacos.sh 替换后推送到 Nacos ↓

# Nacos 中实际配置
url: jdbc:mysql://10.13.13.1:3306/ghb_base?...
host: 10.13.13.1
port: 56379

服务启动时从 Nacos 拉取配置,自动连到外部 MySQL/Redis。

数据库要求

用途 谁建 SQL
nacos Nacos 内部存储 手动 db/tables_nacos.sql
ghb_base 业务数据 手动 or deploy.sh init-db db/ghb_base_init.sql

命令速查

命令 作用
bash deploy.sh init 交互式生成 .env
bash deploy.sh start 停旧容器 → 启动(不编译)
bash deploy.sh build 编译镜像
bash deploy.sh rebuild [分支] 拉代码 + 编译 + 启动
bash deploy.sh stop 停止所有容器
bash deploy.sh logs 查看日志
bash deploy.sh status 容器状态
bash deploy.sh config 查看配置
bash deploy.sh init-db 初始化外部业务数据库
bash deploy.sh init-nacos 强制重新导入 Nacos 配置

目录结构

deploy/
├── deploy.sh                      # 主脚本
├── init-nacos.sh                  # Nacos 配置导入
├── .env                           # 实际配置gitignore
├── docker-compose.yml             # 单体编排
├── docker-compose.cloud.yml       # Spring Cloud 编排
├── config/
│   └── application-prod.yml       # 单体外部配置
└── nacos/config/
    ├── jeecg.yaml                 # 公共配置
    ├── jeecg-dev.yaml             # 环境配置(含占位符)
    ├── jeecg-gateway-dev.yaml     # 网关配置
    └── jeecg-gateway-router.json  # 路由表