4.6 KiB
4.6 KiB
后端 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两个库(见下文)
快速开始
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-gateway、jeecg-system。
架构链路
前端 :3001
↓
Gateway :9999 ──┐
↓ │ ghb-net(Docker 内部网络)
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 # 路由表