# 情绪博物馆容器部署指南 ## 📋 概述 本文档提供了情绪博物馆项目的完整容器化部署方案,支持开发环境和生产环境的快速部署。 ## 🏗️ 架构说明 ### 服务组件 - **前端应用** (Vue3 + Ant Design) - 端口: 80/3000 - **API网关** (Spring Cloud Gateway) - 端口: 9000 - **AI服务** (Spring Boot + Coze API) - 端口: 9002 - **用户服务** (Spring Boot) - 端口: 9001 - **MySQL数据库** - 端口: 3306 - **Redis缓存** - 端口: 6379 - **Nacos注册中心** - 端口: 8848 - **Nginx反向代理** - 端口: 80/443 ### 网络架构 ``` Internet → Nginx → Frontend/Gateway → Microservices → Database ``` ## 🚀 快速开始 ### 1. 系统要求 - **操作系统**: Linux/macOS/Windows - **Docker**: 20.10+ - **Docker Compose**: 1.29+ - **内存**: 最少4GB,推荐8GB+ - **磁盘**: 最少10GB可用空间 ### 2. 一键部署 ```bash # 克隆项目 git clone cd EmotionMuseum # 快速部署(自动安装依赖) chmod +x quick-deploy.sh ./quick-deploy.sh # 或者手动部署 chmod +x deploy.sh ./deploy.sh ``` ### 3. 访问应用 - **前端应用**: http://localhost - **API文档**: http://localhost:9000/doc.html - **Nacos控制台**: http://localhost:8848/nacos (nacos/nacos) ## 📁 文件结构 ``` EmotionMuseum/ ├── docker-compose.yml # 开发环境配置 ├── docker-compose.prod.yml # 生产环境配置 ├── deploy.sh # 部署脚本 ├── quick-deploy.sh # 快速部署脚本 ├── manage.sh # 管理脚本 ├── .env # 环境变量 ├── deploy/ # 部署配置 │ ├── nginx/ # Nginx配置 │ │ ├── nginx.conf │ │ ├── conf.d/ │ │ └── ssl/ │ ├── mysql/ # MySQL配置 │ └── redis/ # Redis配置 ├── backend/ # 后端服务 │ ├── emotion-gateway/ │ │ └── Dockerfile │ ├── emotion-ai/ │ │ └── Dockerfile │ └── emotion-user/ │ └── Dockerfile └── web/ # 前端应用 ├── Dockerfile └── nginx.conf ``` ## ⚙️ 配置说明 ### 环境变量配置 编辑 `.env` 文件: ```bash # 数据库配置 MYSQL_ROOT_PASSWORD=123456 MYSQL_DATABASE=emotion_museum MYSQL_USER=emotion MYSQL_PASSWORD=emotion123 # Coze API配置 COZE_API_TOKEN=your-coze-api-token # 时区设置 TZ=Asia/Shanghai ``` ### Nginx配置 - **主配置**: `deploy/nginx/nginx.conf` - **站点配置**: `deploy/nginx/conf.d/emotion-museum.conf` - **SSL证书**: `deploy/nginx/ssl/` ### 数据库配置 - **MySQL配置**: `deploy/mysql/conf.d/my.cnf` - **初始化脚本**: `backend/mysql_emotion_museum_final.sql` ## 🛠️ 管理命令 ### 基础操作 ```bash # 启动所有服务 ./manage.sh start # 停止所有服务 ./manage.sh stop # 重启所有服务 ./manage.sh restart # 查看服务状态 ./manage.sh status ``` ### 日志管理 ```bash # 查看所有服务日志 ./manage.sh logs # 跟踪日志输出 ./manage.sh logs -f # 查看特定服务日志 ./manage.sh logs -s gateway ./manage.sh logs -s ai-service ``` ### 服务管理 ```bash # 重启特定服务 ./manage.sh restart gateway ./manage.sh restart ai-service # 健康检查 ./manage.sh health # 监控面板 ./manage.sh monitor ``` ### 数据管理 ```bash # 备份数据 ./manage.sh backup # 恢复数据 ./manage.sh restore backup_file.tar.gz # 更新服务 ./manage.sh update # 清理资源 ./manage.sh clean ``` ## 🔧 生产环境部署 ### 1. 使用生产配置 ```bash # 使用生产环境配置文件 docker-compose -f docker-compose.prod.yml up -d ``` ### 2. SSL证书配置 ```bash # 放置SSL证书 cp your-domain.crt deploy/nginx/ssl/emotion-museum.crt cp your-domain.key deploy/nginx/ssl/emotion-museum.key # 修改Nginx配置启用HTTPS vim deploy/nginx/conf.d/emotion-museum.conf ``` ### 3. 域名配置 修改 `deploy/nginx/conf.d/emotion-museum.conf`: ```nginx server_name your-domain.com www.your-domain.com; ``` ### 4. 防火墙配置 ```bash # Ubuntu/Debian sudo ufw allow 80/tcp sudo ufw allow 443/tcp # CentOS/RHEL sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload ``` ## 📊 监控和维护 ### 服务监控 ```bash # 实时监控 ./manage.sh monitor # 资源使用情况 docker stats # 服务状态 docker-compose ps ``` ### 日志查看 ```bash # 应用日志 ./manage.sh logs -f # 系统日志 tail -f logs/nginx/access.log tail -f logs/mysql/error.log ``` ### 性能优化 1. **数据库优化**: 调整 `deploy/mysql/conf.d/my.cnf` 2. **Redis优化**: 调整 `deploy/redis/redis.conf` 3. **Nginx优化**: 调整 `deploy/nginx/nginx.conf` 4. **JVM优化**: 修改Dockerfile中的JVM参数 ## 🔒 安全配置 ### 1. 数据库安全 - 修改默认密码 - 限制访问IP - 启用SSL连接 ### 2. Redis安全 - 设置密码认证 - 绑定特定IP - 禁用危险命令 ### 3. Nginx安全 - 启用HTTPS - 配置安全头 - 限制请求频率 ### 4. 应用安全 - 配置JWT密钥 - 启用CORS限制 - 设置API限流 ## 🚨 故障排除 ### 常见问题 #### 1. 服务启动失败 ```bash # 查看服务日志 ./manage.sh logs -s service-name # 检查端口占用 netstat -tlnp | grep :port # 重启服务 ./manage.sh restart service-name ``` #### 2. 数据库连接失败 ```bash # 检查MySQL状态 docker-compose exec mysql mysqladmin ping -u root -p # 查看数据库日志 ./manage.sh logs -s mysql ``` #### 3. 前端访问异常 ```bash # 检查Nginx配置 nginx -t # 查看Nginx日志 ./manage.sh logs -s nginx ``` #### 4. API调用失败 ```bash # 检查网关状态 curl http://localhost:9000/actuator/health # 查看网关日志 ./manage.sh logs -s gateway ``` ### 性能问题 1. **内存不足**: 增加服务器内存或调整JVM参数 2. **磁盘空间**: 清理日志文件和Docker镜像 3. **网络延迟**: 检查服务间网络连接 ## 📞 技术支持 如遇到问题,请: 1. 查看相关服务日志 2. 检查配置文件 3. 参考故障排除指南 4. 联系技术支持团队 --- **部署完成后,请及时修改默认密码和配置文件中的敏感信息!**