- 重构LanguageUtils为LanguageService,实现ILanguageService接口 - 移除自定义验证管道和装饰器,使用标准NestJS验证 - 集成框架ValidatorService进行业务验证 - 简化目录结构,移除不必要的子目录 - 支持模块化语言包加载(common、user、order等) - 统一API响应格式(code、msg、data、timestamp) - 添加ValidationExceptionFilter处理多语言验证错误 - 完善多语言示例和文档
6.9 KiB
6.9 KiB
🐳 WWJCloud Docker 部署指南
📋 目录结构
wwjcloud-nsetjs/
├── docker-compose.yml # 生产环境配置
├── docker-compose.dev.yml # 开发环境配置(仅MySQL+Redis)
├── wwjcloud-nest/
│ ├── Dockerfile # NestJS后端镜像
│ ├── .dockerignore # Docker忽略文件
│ └── admin/
│ ├── Dockerfile # Admin前端镜像
│ ├── nginx.conf # Nginx配置
│ └── .dockerignore # Docker忽略文件
└── sql/
└── wwjcloud.sql # 数据库初始化脚本
🚀 快速开始
方式1:完整部署(推荐用于测试)
启动所有服务(MySQL + Redis + NestJS + Admin):
# 构建并启动所有服务
docker-compose up -d --build
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止所有服务
docker-compose down
# 停止并删除数据卷(⚠️ 会清空数据库)
docker-compose down -v
访问地址:
- Admin管理面板: http://localhost
- NestJS API: http://localhost:3000
- MySQL: localhost:3306
- Redis: localhost:6379
方式2:开发模式(仅基础设施)
只启动MySQL和Redis,本地运行NestJS和Admin:
# 启动MySQL和Redis
docker-compose -f docker-compose.dev.yml up -d
# 本地启动NestJS
cd wwjcloud-nest
npm install
npm run start:dev
# 本地启动Admin(新终端)
cd wwjcloud-nest/admin
npm install
npm run dev
访问地址:
- Admin管理面板: http://localhost:5173
- NestJS API: http://localhost:3000
📊 服务详情
1. MySQL 数据库
容器名: wwjcloud-mysql
端口: 3306
数据库: wwjcloud
用户: wwjcloud
密码: wwjcloud123
Root密码: root123456
连接字符串:
mysql://wwjcloud:wwjcloud123@localhost:3306/wwjcloud
2. Redis 缓存
容器名: wwjcloud-redis
端口: 6379
密码: redis123456
连接字符串:
redis://:redis123456@localhost:6379
3. NestJS 后端
容器名: wwjcloud-nestjs
端口: 3000
健康检查: http://localhost:3000/health
环境变量:
NODE_ENV: productionDB_HOST: mysqlDB_PORT: 3306REDIS_HOST: redisREDIS_PORT: 6379
4. Admin 前端
容器名: wwjcloud-admin
端口: 80
Web服务器: Nginx
特性:
- Vue Router History模式
- API自动代理到NestJS后端
- Gzip压缩
- 静态资源缓存
🔧 常用命令
查看日志
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f nestjs-backend
docker-compose logs -f admin-frontend
docker-compose logs -f mysql
docker-compose logs -f redis
# 查看最近100行日志
docker-compose logs --tail=100 nestjs-backend
重启服务
# 重启所有服务
docker-compose restart
# 重启特定服务
docker-compose restart nestjs-backend
docker-compose restart admin-frontend
进入容器
# 进入NestJS容器
docker-compose exec nestjs-backend sh
# 进入MySQL容器
docker-compose exec mysql bash
docker-compose exec mysql mysql -u wwjcloud -pwwjcloud123 wwjcloud
# 进入Redis容器
docker-compose exec redis redis-cli -a redis123456
清理资源
# 停止所有服务
docker-compose down
# 停止并删除数据卷(⚠️ 会清空数据库)
docker-compose down -v
# 删除所有镜像
docker-compose down --rmi all
# 清理所有Docker资源
docker system prune -a
🐛 故障排查
1. 服务启动失败
# 查看服务状态
docker-compose ps
# 查看详细日志
docker-compose logs nestjs-backend
# 检查健康状态
docker inspect wwjcloud-nestjs | grep -A 10 Health
2. 数据库连接失败
# 检查MySQL是否就绪
docker-compose exec mysql mysqladmin ping -h localhost -u root -proot123456
# 查看MySQL日志
docker-compose logs mysql
# 手动连接测试
docker-compose exec mysql mysql -u wwjcloud -pwwjcloud123 -e "SHOW DATABASES;"
3. Redis连接失败
# 检查Redis是否就绪
docker-compose exec redis redis-cli -a redis123456 ping
# 查看Redis日志
docker-compose logs redis
4. 前端无法访问后端API
# 检查Nginx配置
docker-compose exec admin-frontend cat /etc/nginx/conf.d/default.conf
# 测试API代理
curl http://localhost/adminapi/health
# 检查网络连接
docker-compose exec admin-frontend ping nestjs-backend
🔒 安全配置
生产环境建议
- 修改默认密码:
编辑 docker-compose.yml:
environment:
MYSQL_ROOT_PASSWORD: your-strong-password
MYSQL_PASSWORD: your-strong-password
REDIS_PASSWORD: your-strong-password
JWT_SECRET: your-super-secret-jwt-key
- 使用环境变量文件:
创建 .env 文件:
MYSQL_ROOT_PASSWORD=your-strong-password
MYSQL_PASSWORD=your-strong-password
REDIS_PASSWORD=your-strong-password
JWT_SECRET=your-super-secret-jwt-key
- 启用HTTPS:
修改 nginx.conf 添加SSL配置。
- 限制网络访问:
services:
mysql:
expose:
- "3306"
# 不使用 ports,只在内部网络暴露
📈 性能优化
1. 资源限制
services:
nestjs-backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
2. 数据库优化
# 连接到MySQL
docker-compose exec mysql mysql -u root -proot123456
# 查看慢查询
SHOW VARIABLES LIKE 'slow_query%';
# 优化表
OPTIMIZE TABLE your_table;
3. Redis优化
# 查看Redis信息
docker-compose exec redis redis-cli -a redis123456 INFO
# 查看内存使用
docker-compose exec redis redis-cli -a redis123456 INFO memory
📦 数据备份与恢复
备份数据库
# 备份MySQL
docker-compose exec mysql mysqldump -u root -proot123456 wwjcloud > backup_$(date +%Y%m%d).sql
# 备份Redis
docker-compose exec redis redis-cli -a redis123456 SAVE
docker cp wwjcloud-redis:/data/dump.rdb ./redis_backup_$(date +%Y%m%d).rdb
恢复数据库
# 恢复MySQL
docker-compose exec -T mysql mysql -u root -proot123456 wwjcloud < backup_20241004.sql
# 恢复Redis
docker cp redis_backup_20241004.rdb wwjcloud-redis:/data/dump.rdb
docker-compose restart redis
🎯 测试checklist
- MySQL容器启动成功
- Redis容器启动成功
- NestJS容器启动成功
- Admin容器启动成功
- 所有健康检查通过
- 可以访问Admin管理面板 (http://localhost)
- 可以访问NestJS API (http://localhost:3000)
- Admin可以调用后端API
- 登录功能正常
- 数据库连接正常
- Redis缓存正常
📞 获取帮助
如遇问题,请检查:
- Docker和Docker Compose版本
- 端口占用情况 (80, 3000, 3306, 6379)
- 容器日志 (
docker-compose logs) - 健康检查状态 (
docker-compose ps)