Files
wwjcloud-nest-v1/README-DOCKER.md
wanwu b1e16be25d feat: 重构多语言模块,符合NestJS规范
- 重构LanguageUtils为LanguageService,实现ILanguageService接口
- 移除自定义验证管道和装饰器,使用标准NestJS验证
- 集成框架ValidatorService进行业务验证
- 简化目录结构,移除不必要的子目录
- 支持模块化语言包加载(common、user、order等)
- 统一API响应格式(code、msg、data、timestamp)
- 添加ValidationExceptionFilter处理多语言验证错误
- 完善多语言示例和文档
2025-10-06 10:56:59 +08:00

367 lines
6.9 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.
# 🐳 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
```bash
# 构建并启动所有服务
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
```bash
# 启动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 数据库
```yaml
容器名: wwjcloud-mysql
端口: 3306
数据库: wwjcloud
用户: wwjcloud
密码: wwjcloud123
Root密码: root123456
```
**连接字符串**:
```
mysql://wwjcloud:wwjcloud123@localhost:3306/wwjcloud
```
### 2. Redis 缓存
```yaml
容器名: wwjcloud-redis
端口: 6379
密码: redis123456
```
**连接字符串**:
```
redis://:redis123456@localhost:6379
```
### 3. NestJS 后端
```yaml
容器名: wwjcloud-nestjs
端口: 3000
健康检查: http://localhost:3000/health
```
**环境变量**:
- `NODE_ENV`: production
- `DB_HOST`: mysql
- `DB_PORT`: 3306
- `REDIS_HOST`: redis
- `REDIS_PORT`: 6379
### 4. Admin 前端
```yaml
容器名: wwjcloud-admin
端口: 80
Web服务器: Nginx
```
**特性**:
- Vue Router History模式
- API自动代理到NestJS后端
- Gzip压缩
- 静态资源缓存
## 🔧 常用命令
### 查看日志
```bash
# 查看所有服务日志
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
```
### 重启服务
```bash
# 重启所有服务
docker-compose restart
# 重启特定服务
docker-compose restart nestjs-backend
docker-compose restart admin-frontend
```
### 进入容器
```bash
# 进入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
```
### 清理资源
```bash
# 停止所有服务
docker-compose down
# 停止并删除数据卷(⚠️ 会清空数据库)
docker-compose down -v
# 删除所有镜像
docker-compose down --rmi all
# 清理所有Docker资源
docker system prune -a
```
## 🐛 故障排查
### 1. 服务启动失败
```bash
# 查看服务状态
docker-compose ps
# 查看详细日志
docker-compose logs nestjs-backend
# 检查健康状态
docker inspect wwjcloud-nestjs | grep -A 10 Health
```
### 2. 数据库连接失败
```bash
# 检查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连接失败
```bash
# 检查Redis是否就绪
docker-compose exec redis redis-cli -a redis123456 ping
# 查看Redis日志
docker-compose logs redis
```
### 4. 前端无法访问后端API
```bash
# 检查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
```
## 🔒 安全配置
### 生产环境建议
1. **修改默认密码**:
编辑 `docker-compose.yml`:
```yaml
environment:
MYSQL_ROOT_PASSWORD: your-strong-password
MYSQL_PASSWORD: your-strong-password
REDIS_PASSWORD: your-strong-password
JWT_SECRET: your-super-secret-jwt-key
```
2. **使用环境变量文件**:
创建 `.env` 文件:
```env
MYSQL_ROOT_PASSWORD=your-strong-password
MYSQL_PASSWORD=your-strong-password
REDIS_PASSWORD=your-strong-password
JWT_SECRET=your-super-secret-jwt-key
```
3. **启用HTTPS**:
修改 `nginx.conf` 添加SSL配置。
4. **限制网络访问**:
```yaml
services:
mysql:
expose:
- "3306"
# 不使用 ports只在内部网络暴露
```
## 📈 性能优化
### 1. 资源限制
```yaml
services:
nestjs-backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
```
### 2. 数据库优化
```bash
# 连接到MySQL
docker-compose exec mysql mysql -u root -proot123456
# 查看慢查询
SHOW VARIABLES LIKE 'slow_query%';
# 优化表
OPTIMIZE TABLE your_table;
```
### 3. Redis优化
```bash
# 查看Redis信息
docker-compose exec redis redis-cli -a redis123456 INFO
# 查看内存使用
docker-compose exec redis redis-cli -a redis123456 INFO memory
```
## 📦 数据备份与恢复
### 备份数据库
```bash
# 备份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
```
### 恢复数据库
```bash
# 恢复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缓存正常
## 📞 获取帮助
如遇问题,请检查:
1. Docker和Docker Compose版本
2. 端口占用情况 (80, 3000, 3306, 6379)
3. 容器日志 (`docker-compose logs`)
4. 健康检查状态 (`docker-compose ps`)