# 泉友米车友会 - 部署说明 版本: 0.0.1 ## 🚀 快速部署(推荐) ### Windows 用户 ```cmd # 1. 构建镜像 build.bat # 2. 启动服务 docker-compose up -d # 3. 初始化管理员 docker exec -it quanyoumi-app sh node init-admin.js ``` ### Linux/Mac 用户 ```bash # 1. 构建镜像 chmod +x build.sh ./build.sh # 2. 启动服务 docker-compose up -d # 3. 初始化管理员 docker exec -it quanyoumi-app sh node init-admin.js ``` ## 📝 部署前准备 ### 1. 修改配置文件 编辑 `docker-compose.yml`,修改以下配置: ```yaml environment: - DB_PASSWORD=your_mysql_password # 修改数据库密码 - JWT_SECRET=your_jwt_secret_key # 修改JWT密钥(随机字符串) - AMAP_KEY=your_amap_key # 填入高德地图Key ``` 同时修改 MySQL 服务的密码: ```yaml db: environment: - MYSQL_ROOT_PASSWORD=your_mysql_password # 与上面保持一致 ``` ### 2. 获取高德地图 Key 1. 访问 https://console.amap.com/ 2. 注册/登录账号 3. 创建应用,选择 Web 端(JS API) 4. 复制 Key 填入配置 ## 🔧 详细步骤 ### 步骤 1: 构建 Docker 镜像 镜像包含前端(Vue3)和后端(Node.js),版本号 0.0.1。 **Windows:** ```cmd build.bat ``` **Linux/Mac:** ```bash chmod +x build.sh ./build.sh ``` ### 步骤 2: 启动服务 使用 docker-compose 启动完整环境(应用+MySQL+MinIO): ```bash docker-compose up -d ``` 查看启动状态: ```bash docker-compose ps ``` 查看日志: ```bash docker-compose logs -f app ``` ### 步骤 3: 初始化数据库 数据库会自动初始化(使用 database.sql),等待约 30 秒。 检查数据库是否就绪: ```bash docker-compose logs db | grep "ready for connections" ``` ### 步骤 4: 创建管理员账号 进入应用容器: ```bash docker exec -it quanyoumi-app sh ``` 运行初始化脚本: ```bash node init-admin.js ``` 按提示输入: - 用户名(例如:admin) - 密码(至少6位) - 确认密码 退出容器: ```bash exit ``` ### 步骤 5: 访问应用 - **前端页面**: http://localhost:3000 - **后台管理**: http://localhost:3000/admin/login - **MinIO 控制台**: http://localhost:9001 (minioadmin/minioadmin) ## 📦 镜像信息 - **镜像名称**: quanyoumi-app - **版本**: 0.0.1 - **基础镜像**: node:18-alpine - **大小**: 约 200MB - **包含内容**: - 前端构建产物(Vue3 + Vant4) - 后端服务(Node.js + Express) - 依赖包(仅生产环境) ## 🔍 验证部署 ### 1. 检查服务状态 ```bash docker-compose ps ``` 应该看到 3 个服务都是 Up 状态: - quanyoumi-app - quanyoumi-db - quanyoumi-minio ### 2. 检查应用日志 ```bash docker-compose logs app ``` 应该看到: ``` 服务器运行在 http://localhost:3000 运行模式: 生产环境(前后端一体) ``` ### 3. 测试访问 浏览器访问 http://localhost:3000,应该能看到首页。 ## 🛠️ 常见问题 ### 问题 1: 端口被占用 错误信息:`port is already allocated` 解决方法: ```bash # 修改 docker-compose.yml 中的端口映射 ports: - "3001:3000" # 改为其他端口 ``` ### 问题 2: 数据库连接失败 错误信息:`ECONNREFUSED` 或 `Access denied` 解决方法: 1. 检查数据库是否启动:`docker-compose ps db` 2. 检查密码是否一致(app 和 db 的密码要相同) 3. 等待数据库完全启动(约 30 秒) ### 问题 3: 前端页面空白 解决方法: 1. 检查浏览器控制台是否有错误 2. 确认后端 API 是否正常:访问 http://localhost:3000/api/activities 3. 重新构建镜像:`docker-compose build --no-cache` ### 问题 4: 图片上传失败 解决方法: 1. 检查 MinIO 是否运行:`docker-compose ps minio` 2. 访问 MinIO 控制台创建 bucket:http://localhost:9001 3. 检查环境变量配置是否正确 ## 🔄 更新应用 ```bash # 1. 停止服务 docker-compose down # 2. 拉取最新代码 git pull # 3. 重新构建 docker-compose build --no-cache # 4. 启动服务 docker-compose up -d ``` ## 🗑️ 清理 ### 停止服务(保留数据) ```bash docker-compose down ``` ### 完全清理(删除数据) ```bash docker-compose down -v ``` ### 删除镜像 ```bash docker rmi quanyoumi-app:0.0.1 ``` ## 📊 生产环境建议 1. **使用反向代理** - 推荐使用 Nginx 或 Caddy - 配置 HTTPS 证书 - 设置域名 2. **修改默认密码** - MySQL root 密码 - MinIO 访问密钥 - JWT 密钥(长随机字符串) 3. **数据备份** - 定期备份 MySQL 数据 - 备份 MinIO 存储 - 备份上传文件 4. **监控告警** - 配置日志收集 - 设置资源监控 - 配置告警通知 5. **安全加固** - 限制数据库外部访问 - 使用防火墙规则 - 定期更新镜像 ## 📞 技术支持 如有问题,请查看: 1. 应用日志:`docker-compose logs app` 2. 数据库日志:`docker-compose logs db` 3. MinIO 日志:`docker-compose logs minio` 或联系技术支持团队。