a7f3ee3565
同步仓库名称变更,涉及 16 个文件 66 处引用: - ai-skills: 菜单配置 - backend/guides: AI操作手册、环境配置、部署、gitnexus、opencode 工作流 - backend: 模块创建规则、通信规范、协作工作流、实施规范 - frontend: 收银设计、管理后台实施计划 - standards: 数据库设计规范
6.1 KiB
6.1 KiB
部署指南
🎯 部署架构
┌─────────────────────────────────────────┐
│ Nginx 网关 │
│ (负载均衡/静态资源) │
└──────────────┬──────────────────────────┘
│
┌───────┴───────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 前端静态资源 │ │ rui-gateway │
│ (dist目录) │ │ Spring Cloud│
└─────────────┘ │ Gateway │
└──────┬──────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│rui-auth │ │rui- │ │rui- │
│(认证) │ │service │ │cashier │
└─────────┘ │(系统) │ │(收银) │
└─────────┘ └─────────┘
│
┌──────┴──────┐
▼ ▼
┌──────────┐ ┌──────────┐
│rui-payment│ │ MySQL │
│ (支付) │ │ (数据库) │
└──────────┘ └──────────┘
🐳 Docker 部署
1. 构建镜像
# 进入后端目录
cd ~/rhkj/rui-framework/backend
# Maven 打包
mvn clean package -DskipTests
# 构建 Docker 镜像(以 gateway 为例)
cd rui-gateway
docker build -t rui-gateway:latest .
# 构建其他服务...
cd ../rui-auth && docker build -t rui-auth:latest .
cd ../rui-service/rui-service-system && docker build -t rui-service-system:latest .
2. docker-compose.yml
version: '3.8'
services:
# MySQL
mysql:
image: mysql:8.0
container_name: rui-mysql
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: rui_cloud
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
# Redis
redis:
image: redis:7-alpine
container_name: rui-redis
ports:
- "6379:6379"
# Nacos (注册中心)
nacos:
image: nacos/nacos-server:v2.2.3
container_name: rui-nacos
environment:
MODE: standalone
ports:
- "8848:8848"
# Gateway
gateway:
image: rui-gateway:latest
container_name: rui-gateway
ports:
- "8080:8080"
depends_on:
- nacos
# Auth
auth:
image: rui-auth:latest
container_name: rui-auth
depends_on:
- nacos
- mysql
- redis
# Service
service-system:
image: rui-service-system:latest
container_name: rui-service-system
depends_on:
- nacos
- mysql
- redis
volumes:
mysql-data:
3. 启动服务
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f gateway
# 停止服务
docker-compose down
🚀 生产环境部署
1. 服务器准备
| 服务器 | 配置 | 部署内容 |
|---|---|---|
| 服务器 1 | 4C8G | Gateway + Auth + Nacos |
| 服务器 2 | 4C8G | Service + Cashier + Payment |
| 服务器 3 | 4C8G | MySQL + Redis |
| 服务器 4 | 2C4G | Nginx + 前端静态资源 |
2. 部署脚本
#!/bin/bash
# deploy.sh - 生产环境部署脚本
set -e
# 配置
SERVER_USER="root"
SERVER_IP="192.168.1.100"
JAR_PATH="target/*.jar"
BACKUP_DIR="/opt/backup"
APP_DIR="/opt/rui"
# 备份旧版本
echo "备份旧版本..."
ssh $SERVER_USER@$SERVER_IP "mkdir -p $BACKUP_DIR && cp $APP_DIR/*.jar $BACKUP_DIR/ 2>/dev/null || true"
# 上传新版本
echo "上传新版本..."
scp $JAR_PATH $SERVER_USER@$SERVER_IP:$APP_DIR/
# 重启服务
echo "重启服务..."
ssh $SERVER_USER@$SERVER_IP "cd $APP_DIR && ./restart.sh"
echo "部署完成!"
📊 监控与日志
日志查看
# 查看实时日志
docker logs -f rui-gateway
# 查看最近 100 行
docker logs --tail=100 rui-gateway
# 查看指定时间范围
docker logs --since="2024-01-01T00:00:00" rui-gateway
健康检查
# Gateway 健康检查
curl http://localhost:8080/actuator/health
# 服务注册状态
curl http://localhost:8848/nacos/v1/ns/instance/list?serviceName=rui-gateway
🔧 常见问题
1. 服务无法注册到 Nacos
原因:Nacos 地址配置错误 解决:
spring:
cloud:
nacos:
discovery:
server-addr: nacos:8848 # 使用容器名或 IP
2. 数据库连接失败
原因:MySQL 未启动或网络不通 解决:
# 检查 MySQL 状态
docker ps | grep mysql
# 测试连接
docker exec -it rui-mysql mysql -uroot -p -e "SELECT 1"
3. 端口冲突
原因:端口被占用 解决:
# 查看端口占用
netstat -tlnp | grep 8080
# 修改 docker-compose.yml 端口映射
ports:
- "8081:8080" # 宿主机8081映射到容器8080
📈 性能优化
JVM 参数
java -jar \
-Xms512m \
-Xmx1024m \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
app.jar
连接池配置
spring:
datasource:
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 300000
max-lifetime: 1200000
connection-timeout: 20000
🔄 滚动更新
# 1. 启动新版本(不停止旧版本)
docker-compose up -d --no-deps --scale gateway=2 gateway
# 2. 等待新版本健康检查通过
sleep 30
# 3. 停止旧版本
docker-compose stop gateway_1
# 4. 移除旧版本
docker-compose rm -f gateway_1
最后提醒:生产环境部署前务必在测试环境验证!