test-backend/deploy/README.md

178 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 后端 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 场景**:需提前建好 `nacos``ghb_base` 两个库(见下文)
---
## 快速开始
```bash
cd deploy
# 1. 交互式配置
bash deploy.sh init
# 2. 编译镜像(首次 10-20 分钟)
bash deploy.sh build
# 3. 启动
bash deploy.sh start
```
---
## 完整步骤Spring Cloud + 外部 MySQL/Redis
### 第一步:初始化数据库
```bash
# 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
```
### 第二步:交互式配置
```bash
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
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-gateway`、`jeecg-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
```yaml
# 模板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 # 路由表
```