# 🐳 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`)