From 31708df6cba99d8bbf1511a1e8549e14c319fe7f Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Wed, 8 Apr 2026 13:29:54 +0800 Subject: [PATCH] v1.1.1 --- DOCKER_README.md | 66 ++++++++++++++++++---------------------------- docker-compose.yml | 2 +- manage.sh | 20 +++++++------- start.sh | 6 ++--- 4 files changed, 40 insertions(+), 54 deletions(-) diff --git a/DOCKER_README.md b/DOCKER_README.md index 944b9ae..17501db 100644 --- a/DOCKER_README.md +++ b/DOCKER_README.md @@ -12,22 +12,19 @@ | `start.sh` ⭐ | 一键启动脚本(推荐) | | `stop.sh` | 停止服务脚本 | | `manage.sh` | 服务管理脚本 | -| `generate-ssl-cert.sh` | SSL证书生成脚本 | -| `DOCKER_DEPLOYMENT.md` | 详细部署文档 | | `DOCKER_README.md` | 本文档 | ## 🏗️ 系统架构 ``` 方式一:直接访问 - 用户 → http://服务器IP → iMeeting Nginx (80) → Frontend/Backend + 用户 → http://服务器IP → iMeeting Frontend(Web) (80) → Frontend/Backend 方式二:域名访问(HTTPS) 用户 → https://domain → 接入服务器Nginx (SSL) → iMeeting服务器 (80) → Frontend/Backend ``` -**5个服务容器**: -- **Nginx**: HTTP入口(仅HTTP,SSL由接入服务器处理) +**4个服务容器**: - **Frontend**: React前端应用 - **Backend**: FastAPI后端服务 - **MySQL**: 数据库 @@ -52,9 +49,6 @@ vim .env # 配置七牛云、LLM密钥等 脚本会自动完成: - ✅ 检查Docker依赖 - ✅ 创建必要目录 -- ✅ 生成SSL证书 -- ✅ 配置后端环境变量 -- ✅ 构建前端 - ✅ 启动所有服务 - ✅ 等待健康检查 @@ -67,19 +61,10 @@ cp backend/.env.example backend/.env vim .env # 配置主环境变量 vim backend/.env # 配置后端环境变量 -# 2. 生成SSL证书 -./generate-ssl-cert.sh - -# 3. 构建前端 -cd frontend -npm install -npm run build -cd .. - -# 4. 启动所有服务 +# 2. 启动所有服务 docker-compose up -d -# 5. 查看服务状态 +# 3. 查看服务状态 docker-compose ps ``` @@ -94,7 +79,7 @@ docker-compose ps **域名访问(HTTPS)**: - 需要在接入服务器配置Nginx反向代理 -- 参考文档:[GATEWAY_NGINX_CONFIG.md](GATEWAY_NGINX_CONFIG.md) +- 参考本文“域名和 HTTPS 配置”章节 - 访问示例:https://imeeting.yourdomain.com ## ⚙️ 环境变量配置 @@ -129,9 +114,9 @@ BASE_URL=http://localhost # 生产环境改为: https://your-domain.com HTTP_PORT=80 HTTPS_PORT=443 -# 如需直接访问后端/前端(开发调试用) -# BACKEND_PORT=8001 -# FRONTEND_PORT=3001 +# 如需调整容器对外端口 +# BACKEND_PORT=8000 +# HTTP_PORT=80 ``` ## 📦 数据目录 @@ -146,7 +131,7 @@ data/ └── logs/ # 日志文件 ├── backend/ ├── frontend/ - └── nginx/ + └── frontend/ ``` **重要提示**: @@ -182,13 +167,13 @@ docker-compose ps # 查看日志 docker-compose logs -f # 所有服务 -docker-compose logs -f nginx # Nginx日志 +docker-compose logs -f frontend # 前端Web日志 docker-compose logs -f backend # 后端日志 -tail -f data/logs/nginx/imeeting_access.log # 访问日志 +tail -f data/logs/frontend/*.log # 前端容器日志目录 # 重启服务 docker-compose restart # 重启所有 -docker-compose restart nginx # 重启Nginx +docker-compose restart frontend # 重启前端 # 停止服务 ./stop.sh # 交互式停止 @@ -201,7 +186,7 @@ iMeeting服务器本身仅提供HTTP服务。如需通过域名访问(HTTPS) ### 配置接入服务器 -完整配置步骤请参考:[GATEWAY_NGINX_CONFIG.md](GATEWAY_NGINX_CONFIG.md) +完整配置步骤请参考本文档中的反向代理章节 **简要步骤**: 1. 在接入服务器安装Nginx @@ -225,7 +210,7 @@ server { } ``` -详见:[GATEWAY_NGINX_CONFIG.md](GATEWAY_NGINX_CONFIG.md) +详见:本文档中的反向代理章节 ## 🔍 故障排查 @@ -236,7 +221,7 @@ server { docker-compose logs -f # 文件日志 -tail -f data/logs/nginx/imeeting_error.log +tail -f data/logs/frontend/*.log tail -f data/logs/backend/*.log ``` @@ -269,17 +254,16 @@ curl http://localhost/docs | 502错误 | 检查backend和frontend是否健康 | | 数据库连接失败 | 检查backend/.env配置 | | 前端无法访问API | 检查VITE_API_BASE_URL配置 | -| 如何配置HTTPS | 参考GATEWAY_NGINX_CONFIG.md配置接入服务器 | +| 如何配置HTTPS | 参考本文档中的反向代理章节 | -详见:`DOCKER_DEPLOYMENT.md` 故障排查章节 +详见:`DOCKER_README.md` 故障排查章节 ## 📊 服务组件 | 服务 | 容器名 | 内部端口 | 外部端口 | 健康检查 | |------|--------|----------|----------|----------| -| Nginx | imeeting-nginx | 80 | 80 | ✅ | -| Frontend | imeeting-frontend | 3001 | - | ✅ | -| Backend | imeeting-backend | 8001 | - | ✅ | +| Frontend(Web) | imeeting-frontend | 80 | 80 | ✅ | +| Backend | imeeting-backend | 8000 | 8000 | ✅ | | MySQL | imeeting-mysql | 3306 | - | ✅ | | Redis | imeeting-redis | 6379 | - | ✅ | @@ -309,7 +293,7 @@ npm run build cd .. docker-compose build frontend docker-compose up -d frontend -docker-compose restart nginx +docker-compose restart frontend ``` ### 仅更新后端 @@ -338,7 +322,7 @@ docker-compose exec mysql mysqldump -uroot -p imeeting > backup.sql tar czf imeeting_backup_$(date +%Y%m%d).tar.gz data/ # 备份配置 -tar czf imeeting_config_$(date +%Y%m%d).tar.gz .env backend/.env nginx/ +tar czf imeeting_config_$(date +%Y%m%d).tar.gz .env backend/.env frontend/nginx.conf ``` ### 恢复数据 @@ -367,7 +351,7 @@ tar xzf imeeting_backup_20240101.tar.gz 3. ✅ **设置文件权限** ```bash chmod 600 .env backend/.env - chmod 600 nginx/ssl/server.key + 确保接入层反向代理证书文件权限正确 ``` 4. ✅ **启用防火墙** @@ -389,8 +373,8 @@ tar xzf imeeting_backup_20240101.tar.gz 详细的部署说明、配置选项、性能优化等,请查看: -- **详细部署文档**: [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md) -- **Nginx配置说明**: [nginx/README.md](nginx/README.md) +- **部署说明**: [DOCKER_README.md](DOCKER_README.md) +- **前端代理配置**: [frontend/nginx.conf](frontend/nginx.conf) ## 🆘 获取帮助 @@ -398,7 +382,7 @@ tar xzf imeeting_backup_20240101.tar.gz 1. 查看日志:`docker-compose logs -f` 2. 查看健康状态:`docker-compose ps` -3. 查看详细文档:`DOCKER_DEPLOYMENT.md` +3. 查看详细文档:`DOCKER_README.md` 4. 提交Issue到项目仓库 ## 📞 快速命令参考 diff --git a/docker-compose.yml b/docker-compose.yml index 2b1cadd..7df8c2f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,7 +52,7 @@ services: --maxmemory 2gb --maxmemory-policy allkeys-lru healthcheck: - test: ["CMD", "redis-cli", "--raw", "incr", "ping"] + test: ["CMD-SHELL", "redis-cli -a \"$${REDIS_PASSWORD:-${REDIS_PASSWORD:-Unis@123}}\" ping | grep PONG"] interval: 10s timeout: 3s retries: 5 diff --git a/manage.sh b/manage.sh index 1fe6dbf..a713307 100755 --- a/manage.sh +++ b/manage.sh @@ -70,7 +70,7 @@ view_status() { view_logs() { echo "选择要查看的服务:" echo "1) 所有服务" - echo "2) Nginx" + echo "2) 前端Web服务" echo "3) 前端" echo "4) 后端" echo "5) MySQL" @@ -79,7 +79,7 @@ view_logs() { case $log_choice in 1) $COMPOSE_CMD logs -f ;; - 2) $COMPOSE_CMD logs -f nginx ;; + 2) $COMPOSE_CMD logs -f frontend ;; 3) $COMPOSE_CMD logs -f frontend ;; 4) $COMPOSE_CMD logs -f backend ;; 5) $COMPOSE_CMD logs -f mysql ;; @@ -99,7 +99,7 @@ restart_services() { # 重启单个服务 restart_single_service() { echo "选择要重启的服务:" - echo "1) Nginx" + echo "1) 前端Web服务" echo "2) 前端" echo "3) 后端" echo "4) MySQL" @@ -107,7 +107,7 @@ restart_single_service() { read -p "请选择: " service_choice case $service_choice in - 1) $COMPOSE_CMD restart nginx ;; + 1) $COMPOSE_CMD restart frontend ;; 2) $COMPOSE_CMD restart frontend ;; 3) $COMPOSE_CMD restart backend ;; 4) $COMPOSE_CMD restart mysql ;; @@ -122,7 +122,7 @@ restart_single_service() { # 进入容器 enter_container() { echo "选择要进入的容器:" - echo "1) Nginx" + echo "1) 前端Web服务" echo "2) 前端" echo "3) 后端" echo "4) MySQL" @@ -130,7 +130,7 @@ enter_container() { read -p "请选择: " container_choice case $container_choice in - 1) $COMPOSE_CMD exec nginx sh ;; + 1) $COMPOSE_CMD exec frontend sh ;; 2) $COMPOSE_CMD exec frontend sh ;; 3) $COMPOSE_CMD exec backend bash ;; 4) $COMPOSE_CMD exec mysql bash ;; @@ -148,12 +148,13 @@ backup_database() { source .env 2>/dev/null || true MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-Unis@123} + MYSQL_DATABASE=${MYSQL_DATABASE:-imeeting} $COMPOSE_CMD exec mysql mysqldump -uroot -p"${MYSQL_ROOT_PASSWORD}" \ --single-transaction \ --routines \ --triggers \ - imeeting > "$backup_file" + "${MYSQL_DATABASE}" > "$backup_file" print_success "数据库已备份到: $backup_file" read -p "按任意键返回菜单..." -n 1 @@ -187,8 +188,9 @@ restore_database() { source .env 2>/dev/null || true MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-Unis@123} + MYSQL_DATABASE=${MYSQL_DATABASE:-imeeting} - $COMPOSE_CMD exec -T mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" imeeting < "$backup_file" + $COMPOSE_CMD exec -T mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" "${MYSQL_DATABASE}" < "$backup_file" print_success "数据库已恢复" else @@ -265,7 +267,7 @@ export_logs() { timestamp=$(date +%Y%m%d_%H%M%S) $COMPOSE_CMD logs --no-color > "logs_export/all_services_${timestamp}.log" - $COMPOSE_CMD logs --no-color nginx > "logs_export/nginx_${timestamp}.log" + $COMPOSE_CMD logs --no-color frontend > "logs_export/frontend_web_${timestamp}.log" $COMPOSE_CMD logs --no-color frontend > "logs_export/frontend_${timestamp}.log" $COMPOSE_CMD logs --no-color backend > "logs_export/backend_${timestamp}.log" $COMPOSE_CMD logs --no-color mysql > "logs_export/mysql_${timestamp}.log" diff --git a/start.sh b/start.sh index 5f32f8a..8f1becc 100755 --- a/start.sh +++ b/start.sh @@ -165,8 +165,8 @@ show_access_info() { echo -e " API文档: ${BLUE}http://localhost/docs${NC}" echo "" echo -e "${YELLOW}域名访问(HTTPS):${NC}" - echo -e " 需要在接入服务器配置Nginx代理" - echo -e " 参考文档: ${BLUE}GATEWAY_NGINX_CONFIG.md${NC}" + echo -e " 需要在接入服务器配置反向代理" + echo -e " 参考说明: ${BLUE}DOCKER_README.md${NC}" echo "" echo -e "${YELLOW}数据目录:${NC}" echo -e " 数据持久化: ${BLUE}./data/${NC}" @@ -182,7 +182,7 @@ show_access_info() { echo -e " 重启服务: ${BLUE}docker-compose restart${NC}" echo -e " 查看状态: ${BLUE}docker-compose ps${NC}" echo "" - echo -e "${YELLOW}更多信息请查看: ${BLUE}DOCKER_DEPLOYMENT.md${NC}" + echo -e "${YELLOW}更多信息请查看: ${BLUE}DOCKER_README.md${NC}" echo "" }