Files
wwjcloud/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

6.9 KiB
Raw Permalink Blame History

🐳 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

访问地址:

方式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

访问地址:

📊 服务详情

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: production
  • DB_HOST: mysql
  • DB_PORT: 3306
  • REDIS_HOST: redis
  • REDIS_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

🔒 安全配置

生产环境建议

  1. 修改默认密码:

编辑 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
  1. 使用环境变量文件:

创建 .env 文件:

MYSQL_ROOT_PASSWORD=your-strong-password
MYSQL_PASSWORD=your-strong-password
REDIS_PASSWORD=your-strong-password
JWT_SECRET=your-super-secret-jwt-key
  1. 启用HTTPS:

修改 nginx.conf 添加SSL配置。

  1. 限制网络访问:
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缓存正常

📞 获取帮助

如遇问题,请检查:

  1. Docker和Docker Compose版本
  2. 端口占用情况 (80, 3000, 3306, 6379)
  3. 容器日志 (docker-compose logs)
  4. 健康检查状态 (docker-compose ps)